简体   繁体   English

单击函数在具有相同类名的元素上执行多次

[英]click function execute multiple times on elements which has same class name

I used bootstrap multiselect js plugin, after i used in my code, I need to add one click event for each options i select so i bind the click event for that What happened is when i try to click the select option the function execute 2 times.我使用了 bootstrap multiselect js 插件,在我的代码中使用之后,我需要为我选择的每个选项添加一个单击事件,以便我绑定单击事件,当我尝试单击选择选项时,该函数执行 2 次. (It supposed to execute only 1 time) I want to know whats happening in my code, Can anyone explain me ? (它应该只执行 1 次)我想知道我的代码中发生了什么,谁能解释一下?

My code HTML:我的代码 HTML:

<div class="select-box">
    <select id="demo1" multiple class="form-control course-list">
        <option value="Javascript">Javascript</option>
        <option value="Python">Python</option>
        <option value="LISP">LISP</option>
        <option value="C++">C++</option>
        <option value="jQuery">jQuery</option>
        <option value="Ruby">Ruby</option>
    </select>
</div>
<div class="select-box">
    <select id="demo2" multiple class="form-control course-list">
        <option value="Javascript">Javascript</option>
        <option value="Python">Python</option>
        <option value="LISP">LISP</option>
        <option value="C++">C++</option>
        <option value="jQuery">jQuery</option>
        <option value="Ruby">Ruby</option>
    </select>
</div>
<div class="select-box">
    <select id="demo3" multiple class="form-control course-list">
        <option value="Javascript">Javascript</option>
        <option value="Python">Python</option>
        <option value="LISP">LISP</option>
        <option value="C++">C++</option>
        <option value="jQuery">jQuery</option>
        <option value="Ruby">Ruby</option>
    </select>
</div>

My code JS:我的代码JS:

 $(document).ready(function() {
            $('.course-list').multiselect();

            $('.select-box').each(function(){
                $(this).find('.ms-options ul li').each(function(index){
                    $(this).attr('data-item-index',index);
                    $(this).attr('onclick','selectToggleItem(this)');
                    // $(this).bind('click', selectToggleItem);
                });
            });
        });

        function selectToggleItem(e){
            console.log('test');
        }

If i click the list item it call the function (selectToggleItem) 2 times Why ???如果我单击列表项,它会调用函数 (selectToggleItem) 2 次 为什么???

i used bootstrap-multiselect.js and css file for this.我为此使用了 bootstrap-multiselect.js 和 css 文件。

You meet this problem when you click on the label because the event is triggered by both input and label tags.当你点击标签时会遇到这个问题,因为事件是由 input 和 label 标签触发的。 If you click on the checkbox, the selectToggleItem is triggered only once.如果单击复选框,则 selectToggleItem 仅触发一次。

To prevent that behaviour, you can bind the event to the checkbox instead of the <li> tag.为了防止这种行为,您可以将事件绑定到复选框而不是<li>标记。

 $(document).ready(function() { $('.course-list').multiselect(); $('.select-box').each(function(){ $(this).find('.multiselect-container li').each(function(index){ $(this).attr('data-item-index',index); $(this).find("input[type=checkbox]").bind('click', selectToggleItem); }); }); }); function selectToggleItem(e){ console.log('test'); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.15/js/bootstrap-multiselect.min.js"></script> <div class="select-box"> <select id="demo1" multiple class="form-control course-list"> <option value="Javascript">Javascript</option> <option value="Python">Python</option> <option value="LISP">LISP</option> <option value="C++">C++</option> <option value="jQuery">jQuery</option> <option value="Ruby">Ruby</option> </select> </div> <div class="select-box"> <select id="demo2" multiple class="form-control course-list"> <option value="Javascript">Javascript</option> <option value="Python">Python</option> <option value="LISP">LISP</option> <option value="C++">C++</option> <option value="jQuery">jQuery</option> <option value="Ruby">Ruby</option> </select> </div> <div class="select-box"> <select id="demo3" multiple class="form-control course-list"> <option value="Javascript">Javascript</option> <option value="Python">Python</option> <option value="LISP">LISP</option> <option value="C++">C++</option> <option value="jQuery">jQuery</option> <option value="Ruby">Ruby</option> </select> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何多次同时运行 function,将参数传递给具有相同 class 名称的 div - How to run a function simultaneously multiple times, passing parameter to divs that has the same class name 如何在单击时在具有相同类名的多个元素上切换类 - How to toggle class on multiple elements with same class name on click 如何单击量角器中具有相同类名称的多个元素? - How to click on multiple elements having same class name in protractor angular? 单击功能更改具有相同类名的所有元素 - Click function changing all elements with same class name 如何创建具有相同名称的属性和函数的类 - How to create a class which has a property and a function with same name jQuery-将函数应用于具有相同类名的多个选择元素 - jQuery - apply function to multiple select elements with same class name 在具有相同 class 名称的多个 html 元素上运行 function - Run a function on multiple html elements having same class name 多个动态生成的同名元素的点击事件,隐藏和取消隐藏其他元素 - Click event for multiple dynamically generated elements with the same class name to hide and unhide other elements 如何对具有相同功能的多个元素执行转换 - How to Execute a Transformation for Multiple elements with the Same Function JavaScript 多次调用相同的函数名 - JavaScript call same function name multiple times
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM