Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在具有相同类名的元素上单击函数多次执行_Javascript_Jquery - Fatal编程技术网

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

Javascript 在具有相同类名的元素上单击函数多次执行,javascript,jquery,Javascript,Jquery,我使用了bootstrap multiselect js插件,在我的代码中使用之后,我需要为我选择的每个选项添加一个单击事件,因此我绑定了单击事件,因为当我尝试单击选择选项时,函数执行了2次。(应该只执行1次) 我想知道我的代码中发生了什么,有人能解释一下吗 我的HTML代码: <div class="select-box"> <select id="demo1" multiple class="form-control course-list">

我使用了bootstrap multiselect js插件,在我的代码中使用之后,我需要为我选择的每个选项添加一个单击事件,因此我绑定了单击事件,因为当我尝试单击选择选项时,函数执行了2次。(应该只执行1次) 我想知道我的代码中发生了什么,有人能解释一下吗

我的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>
如果我单击列表项,它会调用函数(selectToggleItem)2次为什么


我使用bootstrap-multiselect.js和css文件进行此操作。

单击标签时会遇到此问题,因为事件由输入和标签标签触发。如果单击复选框,则selectToggleItem仅触发一次

为了防止这种行为,您可以将事件绑定到复选框而不是
  • 标记

    $(文档).ready(函数(){
    $('.course list').multiselect();
    $('.select box')。每个(函数(){
    $(this).find('.multiselect container li').each(函数(索引){
    $(this).attr('data-item-index',index);
    $(this).find(“输入[type=checkbox]”).bind('click',selectToggleItem));
    });
    });
    });
    功能选择切换项(e){
    console.log('test');
    }
    
    Javascript
    python
    口齿不清
    C++
    jQuery
    红宝石
    Javascript
    python
    口齿不清
    C++
    jQuery
    红宝石
    Javascript
    python
    口齿不清
    C++
    jQuery
    红宝石
    
    Hii,但我仅为li绑定单击对吗?那么,该内部标签的单击事件是如何发生的呢?你能解释一下吗?这是标签的固有行为。单击标签时,它会触发绑定输入标记上的事件。请参阅,我绑定了包含类似于
  • 的单击,如果我单击li元素,为什么selectToggle()会执行两次???
     $(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');
            }