创建动态数量的点击功能

时间:2015-01-08 23:01:23

标签: javascript jquery twitter-bootstrap

我目前有一个功能会自动滚动到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()的一些技巧。

1 个答案:

答案 0 :(得分:2)

您需要做的一件事就是从字符串中取出index并改为传递变量:

$('button.multiselect:eq('+index+')') 
...
$('.multiselect:eq('+index+')').dropdown('toggle');
...

适用于index

的所有实例