创建动态数量的点击功能
Create dynamic number of click functions
我目前有一个功能可以自动滚动到 bootstrap 多选下拉列表中的活动选项。但是,我一直无法修改我的代码以同时处理可变数量的下拉菜单。我的问题在于创建多个函数,或者让一个函数能够做到这一点。
$(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() 使用一些诡计。
您需要做的一件事是从字符串中取出 index
并传递变量:
$('button.multiselect:eq('+index+')')
...
$('.multiselect:eq('+index+')').dropdown('toggle');
...
对于 index
的所有实例
我目前有一个功能可以自动滚动到 bootstrap 多选下拉列表中的活动选项。但是,我一直无法修改我的代码以同时处理可变数量的下拉菜单。我的问题在于创建多个函数,或者让一个函数能够做到这一点。
$(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() 使用一些诡计。
您需要做的一件事是从字符串中取出 index
并传递变量:
$('button.multiselect:eq('+index+')')
...
$('.multiselect:eq('+index+')').dropdown('toggle');
...
对于 index