Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery循环变量名_Javascript_Jquery_Loops - Fatal编程技术网

Javascript 如何使用jQuery循环变量名

Javascript 如何使用jQuery循环变量名,javascript,jquery,loops,Javascript,Jquery,Loops,如何在jQuery中通过以下内容循环: <select class="js-setup"> <option value="">Choose</option> <option value="setup1" data-setup0="1" data-setup1="4" data-setup2="3" data-setup3="3">1 Ananas, 4 Eggs, 3 Apples, 3 Banana</option>

如何在jQuery中通过以下内容循环:

<select class="js-setup">
    <option value="">Choose</option>
    <option value="setup1" data-setup0="1" data-setup1="4" data-setup2="3" data-setup3="3">1 Ananas, 4 Eggs, 3 Apples, 3 Banana</option>
    <option value="setup2" data-setup0="1" data-setup1="4" data-setup2="4" data-setup3="2">1 Ananas, 4 Eggs, 4 Apples, 2 Banana</option>
    <option value="setup3" data-setup0="1" data-setup1="4" data-setup2="5" data-setup3="1">1 Ananas, 4 Eggs, 5 Apples, 1 Banana</option>
</select>

应用程序确实知道(从变量“setupCount”中)总共有4种数据设置可能性。

您可以使用
for
循环进行迭代并按索引选择元素

// var setupCount == 4
$setup.on('change', function () {
    var selected = $(this).find(':selected'); // Cache for better performance

    for(var i = 0; i < 3; i++) {
        $('.js-availableToSelect').eq(i) // Get the element at `i`th index
            .text(selected.data('setup' + i)); // Set the value of data attribute
    }
});
就这么简单:

var设置=[];
对于(i=0;i<4;i++){
setup[i]=$that.find(“:selected”).data('setup'+i);
$('.js availableToSelect:eq('+i+')).text(setup[i]);

}
使用数组而不是4个单独的变量,并使用字符串连接形成数据属性名称。您可以在变量中保存
$that.find(':selected')
,以避免在循环中执行相同的操作。@jcubic I正在执行此操作。ThanksHAH,dam*,在我将问题发布到这里之前,我已经尝试过很多次了……但我总是使用«设置»和«.eq([I])»……谢谢你睁开我的眼睛!:-)@图萨:谢谢!哪一个更好?(性能、工作量)…对于+eq()或带有回调的text()?@albuvee IMO,
text()
应该更快。哈哈,dam*,在我将问题发布到这里之前,我已经尝试过很多次了……但我总是使用«[I]»而不是单独使用«I»……谢谢你睁开我的眼睛!:-)不客气!请选择要给出正确答案的答案:)
// var setupCount == 4
$setup.on('change', function () {
    var selected = $(this).find(':selected'); // Cache for better performance

    for(var i = 0; i < 3; i++) {
        $('.js-availableToSelect').eq(i) // Get the element at `i`th index
            .text(selected.data('setup' + i)); // Set the value of data attribute
    }
});
$setup.on('change', function () {
    var selected = $(this).find(':selected'); // Cache for better performance

    $('.js-availableToSelect').text(function(i) {
        return selected.data('setup' + i);
    });
});