创建动态数量的点击功能

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

的所有实例