代码之家  ›  专栏  ›  技术社区  ›  DigitalZebra

取消绑定内联onclick在jquery中不工作?

  •  22
  • DigitalZebra  · 技术社区  · 16 年前

    好吧,那么,我想知道如何在jquery中取消绑定内联onclick事件。你会想 .unbind() 会起作用,但不会。

    要自己测试,可以使用以下HTML和JavaScript:

    function UnbindTest() {
        $("#unbindTest").unbind('click');
    }
    
    function BindTest() {
        $("#unbindTest").bind('click', function() { alert("bound!"); });
    }
    
    
    <button type="button" onclick="javascript:UnbindTest();">Unbind Test</button>
    <button type="button" onclick="javascript:BindTest();">Bind Test</button>
    <button type="button" onclick="javascript:alert('unbind me!');" id="unbindTest">Unbind Button</button>
    

    如您所见,取消绑定不会取消内联绑定。 onclick 事件…但是,它没有取消绑定添加的Click事件 bind() .

    因此,我想知道是否有一种方法可以解除内联onclick事件的绑定,而不需要执行以下操作:

    $("#unbindTest").get(0).onclick = "";
    

    谢谢

    2 回复  |  直到 16 年前
        1
  •  34
  •   Community Mohan Dere    9 年前

    jquery的unbind无法处理 onclick 属性-它只适用于通过 bind 因此在 $(...).data('events') . 你必须使用 removeAttr 去掉 点击 .

    this question 更多信息。

        2
  •  4
  •   T.J. Crowder    16 年前

    unbind 取消绑定向注册的事件处理程序 bind ,不是通过 onclick 或其他dom0属性。来自文档:

    已附加的任何处理程序 .bind() 可以用 .unbind() .

    编辑 :通过清除元素上的相关属性,可以取消绑定dom0处理程序。我得去查jquery的方法: removeAttr .