首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unbind()和Off()不清除事件

Unbind()和Off()不清除事件
EN

Stack Overflow用户
提问于 2016-12-14 12:41:12
回答 3查看 373关注 0票数 1

我正在尝试清除div中的所有事件。我有两个图像按钮btn1和btn2。现在,我需要为我的btn1禁用图像按钮单击事件。我让函数调用onload来设置图像的url。我调用了禁用css,然后解除绑定/关闭。按钮显示为灰色,但单击事件仍然有效。

代码语言:javascript
复制
function SetApplicationImage(applType) {
    if (applType.id.indexOf('Dog') > -1) {
        applType.src = "../images/btn1_dog.png";
        $("#btn1").attr('disabled', 'disabled').css('cursor', 'default').fadeTo("fast", .25);
        $('#btn1').off();
        $('#btn1').unbind();
    } else if (applType.id.indexOf('Cat') > -1) {
        applType.src = "../images/btn2_cat.png";
    }
}
EN

回答 3

Stack Overflow用户

发布于 2016-12-14 12:45:56

您的选择器有效吗?尝尝这个

代码语言:javascript
复制
 if ( $( "#btn1" ).length ) {
        console.warn('unbinding...')
        $( "#btn1" ).unbind();     
    }
票数 0
EN

Stack Overflow用户

发布于 2016-12-14 13:07:16

如果您需要使用jQuery删除点击事件,请确保事件与jQuery本身绑定。如果它是onclick javascript函数,则offunbind方法不会删除事件。下面是绑定和取消绑定按钮的click事件的示例代码。我希望这将是您正在寻找的解决方案。

代码语言:javascript
复制
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
        function ClickFunction(){
            console.log("Clicked");
        }
        function EnableFunction(){
            $('#btn1').off("click", ClickFunction);
            $('#btn1').bind('click', ClickFunction);
            $("#btn1").prop('disabled', false).css('cursor', 'default').fadeTo("fast", 1);
            console.log("Click Event Added");
        }
        function RemoveClickFunction(){
            $('#btn1').off("click", ClickFunction);
            $("#btn1").attr('disabled', 'disabled').css('cursor', 'default').fadeTo("fast", .25);
            console.log("Click Event Removed");
        }
        $(document).ready(function(){
            $('#btn1').on("click", ClickFunction);
            console.log("Click Event Added");
        })
    </script>
</head>

<body>
    <button id="btn1">Click me</button>    
    <button onclick="EnableFunction()" id="btn2">Enable me</button>
    <button onclick="RemoveClickFunction()" id="btn3">Remove Click Function</button>

</body>

</html>

票数 0
EN

Stack Overflow用户

发布于 2016-12-14 13:08:55

如果要禁用按钮,则不应解除任何事件的绑定,因为这将在按钮再次启用时删除绑定事件的要求。但是,attr()unbind()的工作方式应该如下所示:

代码语言:javascript
复制
$(document).ready(function() {

  $("#btn").attr("disabled", "disabled");

  $("#btnUnbind").click(function() {
    alert("Dont show me");
  });

  $("#btnUnbind").unbind();
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="btn" value="Click" />
<input type="button" id="btnUnbind" value="Unbiind" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41134986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档