Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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 连接到子对象时删除onclick_Javascript_Jquery_Onclick - Fatal编程技术网

Javascript 连接到子对象时删除onclick

Javascript 连接到子对象时删除onclick,javascript,jquery,onclick,Javascript,Jquery,Onclick,我有以下代码: layoutOverlaysBldg = $("#layout-overlays-bldg") layoutOverlaysBldg.on("click", "div", function(event) { var floor; console.log("floornum: " + this.dataset.floornum); floor = parseInt(this.dataset.floornum); ... $("#choose-floor").fa

我有以下代码:

layoutOverlaysBldg = $("#layout-overlays-bldg")
layoutOverlaysBldg.on("click", "div", function(event) {
  var floor;
  console.log("floornum: " + this.dataset.floornum);
  floor = parseInt(this.dataset.floornum);
  ...
  $("#choose-floor").fadeOut();
  $("#choose-apt").fadeIn();
});

稍后-根据我从数据库返回的数据-我想从一些div中删除一些
.on(“单击”,“div”,…)
。我已经有了正确的div选择器,但是我不知道如何删除click事件。在选择了正确的div之后,我尝试了
.off(“单击”)
,但没有效果。

这里的问题是因为您使用的是委托事件。您可以为所有子元素添加或删除事件,但不能为给定的
div
选择器的单个子元素添加或删除事件

记住这一点,最简单的方法就是根据类添加事件,然后根据需要在子类上添加和删除该类。大概是这样的:

layoutOverlaysBldg = $("#layout-overlays-bldg")
layoutOverlaysBldg.on("click", "div.clickable", function(event) {
    // your code...
});

然后,您可以通过添加或删除
.clickable
类来启用/禁用子div上的事件。

您可以这样尝试:

例如:

     <div id="test">
        <div id="first">first</div>
        <div id="second">second</div>
     </div>

     <div onclick="unbindSecondDiv();">UNBIND</div>

    <script>
            function unbindSecondDiv()
            {
                test = $("#second")
                test.unbind("click");

                alert('Selected Area Click is Unbind');

            }

            $(document).ready(function(){
                    //BIND SELECTED DIV CLICK EVENT
                    test = $("#test > div")
                    test.bind("click" , function(event) {
                        alert($(this).attr('id'));
                    });
            });


    </script>

第一
第二
解开
函数unbindSecondDiv()
{
测试=$(“#秒”)
测试。解除绑定(“单击”);
警报(“选定区域单击解除绑定”);
}
$(文档).ready(函数(){
//绑定所选DIV单击事件
测试=$(“#测试>div”)
test.bind(“单击”),函数(事件){
警报($(this.attr('id'));
});
});
在上面的示例中,选定的DIV元素click事件是bind

执行函数unbindSecondDiv()后,第二个DIV click事件将被解除绑定


请尝试一下,可能会对您有所帮助。

要解除绑定,请单击您需要执行解除绑定(“单击”)对不起,我花了一段时间对其进行了测试,但这非常有效,而且非常简单。