jQuery if语句和each循环数组

3
我使用jQuery创建了一个下拉框。这是我的示例代码:http://jsfiddle.net/andreaszeike/gff1r5dr/3/
它已经正常工作,但你能帮我将代码缩短吗?
$(document).ready(function () {
    $('#link-button a ').attr("href", "http://test/")
});

$('select[name=model]').change(function () {

    //keine Auswahl
    if ($(this).val() == '') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/")
        });
    } else

    //alfa-Romeo
    if ($(this).val() == 'ar-1') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alfa-romeo/giulietta/")
        });
    } else

    if ($(this).val() == 'ar-2') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alfa-romeo/mito/")
        });

    } else
    if ($(this).val() == 'ar-3') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alfa-romeo/spider/")
        });
    } else


    //Alpina
    if ($(this).val() == 'alp-1') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alpina/alpina-b3/")
        });
    } else

    if ($(this).val() == 'alp-2') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alpina/alpina-b5/")
        });
    } else

    if ($(this).val() == 'alp-3') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alpina/alpina-b10/")
        });
    } else

    if ($(this).val() == 'alp-4') {
        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/alpina/alpina-rs/")
        });
    } else {}

});

我找到了一些示例(https://www.sitepoint.com/jquery-each-function-examples/),但是我没有成功地将它应用到我的示例上。

3个回答

0
你可以使用 switch 语句。
$('select[name=model]').change(function () {
     var valuee = $(this).val();
     $(document).ready(function () {
       switch(valuee)
       {
        case  '':
             $('#link-button a ').attr("href", "http://test/");
             break;
        case 'ar-1':
             $('#link-button a ').attr("href", "http://test/alfa-romeo/giulietta/");
             break;
        case 'ar-2':
             $('#link-button a ').attr("href", "http://test/alfa-romeo/mito/");
             break;
        case 'ar-3':
             $('#link-button a ').attr("href", "http://test/alfa-romeo/spider/")
             break;
        case 'alp-1':
              $('#link-button a ').attr("href", "http://test/alpina/alpina-b3/")
             break;
        case 'alp-2':
             $('#link-button a ').attr("href", "http://test/alpina/alpina-b5/")
             break;
        case 'alp-3':
              $('#link-button a ').attr("href", "http://test/alpina/alpina-b10/")
             break;
         case 'alp-4':
             $('#link-button a ').attr("href", "http://test/alpina/alpina-rs/")
             break;
        default :
             $('#link-button a ').attr("href", "http://test/");
             break;
    }

  });


});

0
创建一个类似于这样的键值对对象数组:
$(document).ready(function () {
    $('#link-button a ').attr("href", "http://test/")
});

nameUrlArray = [
    {
        key: ''
        value: ''
    },
    {
        key: 'ar-1'
        value: 'alfa-romeo/giulietta/'
    },
    {
        key: 'ar-2'
        value: 'alfa-romeo/mito/'
    },
    {
        key: 'ar-3'
        value: 'alfa-romeo/spider/'
    },
    {
        key: 'alp-1'
        value: 'alpina/alpina-b3/'
    },
    {
        key: 'alp-2'
        value: 'alpina/alpina-b5/'
    },
    {
        key: 'alp-3'
        value: 'alpina/alpina-b10/'
    },  
    {
        key: 'alp-4'
        value: 'alpina/alpina-rs/'
    }    
]

$('select[name=model]').change(function () {


        $(document).ready(function () {
            $('#link-button a ').attr("href", "http://test/" + nameUrlArray.find(element => element.key == $(this).val()).value
        });

});

我现在无法测试它,但这应该可以解决问题。您只需向数组添加一个对象即可添加新的“if”并大大简化代码。


0
你只需要一次使用$(document).ready()。在这种情况下,使用switch case而不是if else。声明URL、jQuery对象等变量,并重复使用它们。
$(document).ready(function() {
    var $linkBtn = $('#link-button a ');
    $linkBtn.attr("href", "http://test/")

    $('select[name=model]').change(function() {
      var sel = $(this).val(),
        url = '';

      switch (sel) {
        //alfa-Romeo
        case 'ar-1':
          url = 'http://test/alfa-romeo/giulietta/';
          break;
        case 'ar-2':
          url = 'http://test/alfa-romeo/mito/';
          break;
        case 'ar-3':
          url = 'http://test/alfa-romeo/spider/';
          break;
        case 'alp-1':
          url = 'http://test/alpina/alpina-b3/';
          break;
        case 'alp-2':
          url = 'http://test/alpina/alpina-b5/';
          break;
        case 'alp-3':
          url = 'http://test/alpina/alpina-b10/';
          break;
        case 'alp-4':
          url = '"http://test/alpina/alpina-rs/';
          break;
        default:
          //keine Auswahl
          url = 'http: //test/';
      }

      $linkBtn.attr("href", url);
    });
  });

这里是 JSFiddle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接