我目前有一个功能会自动滚动到bootstrap multiselect下拉列表中的active选项。但是,我无法修改我的代码以同时处理可变数量的下拉列表。我的问题在于创建多个函数,或者只有一个函数能够执行此操作。
$(document).ready(function () {
var $dropdowns = $('fieldset').find("button.multiselect"); //Find all the dropdowns
console.log($dropdowns); //Show the ones that have been found
$.each($dropdowns, function (i) { //Just get the index of each
console.log(i); //Show index
myFunction(i); //Create n different .click functions (each with their own globals)
});
function myFunction(index) {
var not_found = true;
var jump_to = 0;
var temp = -1;
//Recursively find scrolling value in pixels, then move.
//This works for a single dropdown.
$('button.multiselect:eq(index)').click(function () {
if (not_found == true) {
$('.multiselect:eq(index)').dropdown('toggle');
temp = $('ul.multiselect-container:eq(index) li.active').position().top;
$('.multiselect:eq(index)').dropdown('toggle');
if (temp > jump_to) {
jump_to = temp;
not_found = false;
}
else if (temp <= jump_to) {
$("button.multiselect:eq(index)").click();
}
}
console.log($('ul.multiselect-container:eq(index) li.active').text());
$('ul.multiselect-container:eq(index)').animate({scrollTop: jump_to}, 750); //Scroll to active element
})
}
});
我不确定我是否应该使用addEventListener()的一些技巧。
答案 0 :(得分:2)
您需要做的一件事就是从字符串中取出index
并改为传递变量:
$('button.multiselect:eq('+index+')')
...
$('.multiselect:eq('+index+')').dropdown('toggle');
...
适用于index