Can I remove inline event handlers using jQuery?

前端 未结 5 2154
夕颜
夕颜 2020-12-10 04:17

I have some HTML with an onclick attribute. I want to override that attribute using jQuery. Is there any way to remove the click handler using jQuery? Using unb

相关标签:
5条回答
  • 2020-12-10 04:46

    Try the .removeAttr() function:

    $(function() {
        $('a').removeAttr('onclick');
    });
    

    ​ jsfiddle demo.

    Once you've got rid of the onclick attribute you could attach your own click handler.

    0 讨论(0)
  • 2020-12-10 04:48

    Tried given options but worked partially as they removed one but not all.

    Instead I tried following chaining as workaround. I am using ver 1.4.2.

    jQuery("selector")
        .removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");
    
    0 讨论(0)
  • 2020-12-10 04:58
    $("#theElement")[0].onclick = function() {
      whatever();
    };
    // -- or --
    $("#theElement")[0].onclick = null;
    

    It's not that jQuery would make the standard DOM functions and properties go away. ;-)

    0 讨论(0)
  • 2020-12-10 05:10

    There is a plugin for it, but you should only do this when you really need to. The plugin gives you the option to call the old function or to ignore it entirely.

    jQuery Override Plugin

    $(divElementObj).override('onclick', 'click', function(...));
    
    0 讨论(0)
  • 2020-12-10 05:12

    As quoted in http://api.jquery.com/prop/ Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 8, 9 and 11. To avoid potential problems, use .prop() instead.

    So this can be done as

    $(function() {
        $('a').prop('onclick', false);
    });
    
    0 讨论(0)
提交回复
热议问题