使用jQuery添加内联onclick事件
使用jQuery添加内联onclick事件
这个问题实际上与如何使用JQuery移除"onclick"事件有关。
点击我
根据参考文章,从jQuery 1.7开始移除内联事件的正确方法如下:
// 这个例子中只有一个div $( "div" ).prop( "onclick", null ).off( "click" );
假设我想后来添加一个内联onclick事件。我尝试使用prop
添加事件,但没有成功。然而,使用attr
添加该事件却有效。
// 无法添加事件 $( "div" ).prop( "onclick", "doSomething();" ).on( "click "); // 这个也不行 $( "div" ).prop( "onclick", "doSomething();" ); // 这个可以 $( "div" ).attr( "onclick", "doSomething();" ); // 这个也可以 $( "div" ).attr( "onclick", "doSomething();" ).on( "click" );
有人能解释一下吗?
对于移除内联事件,当前推荐的方法是使用prop
。然而,对于添加内联事件,prop
似乎没有反应。是prop
用于添加内联事件,还是我们只能使用attr
?如果是这样的话,这似乎是不一致的:使用prop
移除,但使用attr
添加。
提前感谢您的帮助。
添加内联onclick事件的原因是为了在点击元素时执行特定的操作。然而,使用jQuery的prop()方法来添加内联onclick事件可能会导致问题。
问题的出现是因为使用prop()方法添加的内联onclick事件无法被激活。这是因为prop()方法只能禁用内联onclick事件,而无法使其生效。通过prop()方法,可以将onclick属性的后端处理程序禁用,但是属性本身仍然存在。
解决方法是使用removeAttr()或attr('onclick','')方法来完全删除onclick属性。这样做会从源码/HTML/DOM中彻底删除onclick属性,从而无法再重新启用。需要注意的是,如果想要重新激活onclick事件,可以通过添加onclick属性并使用bind(click)或click()方法来实现。但是,prop("onclick","doSomething()")方法无法实现这一点,因为它要求属性在首次存在。
总结起来,可以使用prop()方法禁用(而非删除)内联onclick事件,但是如果该事件不存在,则无法启用。在一般情况下,最好不要添加内联onclick属性,如果可能的话,尽量不要使用它们。
以上解答来自网友的讨论,希望能对您有所帮助。