Javascript 使用jQuery添加内联onclick事件
这个问题其实是与我们有关的 假设我想稍后添加一个内联onclick事件。我尝试用Javascript 使用jQuery添加内联onclick事件,javascript,jquery,events,onclick,inline,Javascript,Jquery,Events,Onclick,Inline,这个问题其实是与我们有关的 假设我想稍后添加一个内联onclick事件。我尝试用prop添加事件,但没有成功。然而,使用attr添加所述事件确实有效 // Does not add event $( "div" ).prop( "onclick", "doSomething();" ).on( "click "); // Neither does this $( "div" ).prop( "onclick", "doSomething();" ); // This one works $
prop
添加事件,但没有成功。然而,使用attr
添加所述事件确实有效
// Does not add event
$( "div" ).prop( "onclick", "doSomething();" ).on( "click ");
// Neither does this
$( "div" ).prop( "onclick", "doSomething();" );
// This one works
$( "div" ).attr( "onclick", "doSomething();" );
// This one works, too
$( "div" ).attr( "onclick", "doSomething();" ).on( "click" );
有人能解释一下吗?
对于删除内联事件,jQuery 1.7+当前推荐的方法是prop
。然而,对于添加内联事件,prop
似乎没有响应是否应该使用prop
来添加内联事件,或者我们仅使用attr
来添加内联事件?如果为真,则看起来不一致:使用prop
删除,但使用attr
添加
感谢您事先提供的帮助。我想您的问题只是出于兴趣,而不是因为您有问题。因为如果绑定click事件时遇到问题,应该使用jQuery的
click()
。所以要回答你的问题,我认为区别在于:
$(“div”).prop(“onclick”,null).off(“click”)代码>
不从DOM的属性中删除onclick=“
,而只是禁用click事件的“后端”处理程序,如果您知道我的意思的话。源代码仍然会说onclick=“”
(该属性仍然存在),但是单击事件与“
之间的任何内容的实际绑定被破坏
使用removeAttr()
或attr('onclick','')
,onclick属性实际上从源/HTML/DOM中完全删除(并且不能再重新启用,除非再次添加该属性)
从逻辑上讲,您可以通过添加一个onclick属性(如:attr('onclick',doSometing();”
)将某些内容添加回源代码/HTML。但这仍然需要激活(使用bind(click)
,或click()
),因为元素已经在DOM中。但是,您不能使用prop激活onclick(“onclick”、“doSometing();”
,因为这首先要求属性在那里
简而言之:您可以使用prop禁用(不是删除,而是禁用)内联onclick,但如果它不存在,则无法启用它
另外,一般来说,不要添加内联onclick属性,如果可以的话,也不要使用它们:)你不应该添加带有attr()
或prop()
的click事件。使用click()
或on()
。至于何时使用和,只需阅读文档。为什么要添加“内联”呢“事件?您正在进入浏览器兼容性的危险地带。使用jQuery事件来避免兼容性问题。我理解这一点。但我说的是内联事件,不是jQuery事件。我正在保存内联事件。第三方插件实际上是在创建内联事件,删除和添加内联事件是解决其他问题的一种方法。我不想卷入这一切。我只是想了解为什么prop
在删除时有效,而在添加内联事件时无效的概念和理论。谢谢。这很有帮助,谢谢!你真的回答了这个问题。如果测试中的问题是如何添加内联onclick事件prop
或attr
,您不会在测试中写“不要这样做,使用on
和单击
”。当然,这是一个很好的答案,但实际上并没有回答问题。所以,我非常感谢你花时间谈论为什么prop
不添加内联事件。非常欢迎你!)存在的onClick
属性与实际绑定到该对象的CLICK事件之间有非常重要的区别。它们是两个完全不同的东西,一个可以不带另一个而存在,或者相反。i、 e.您可以拥有一个没有onClick
的对象,但仍然是一个由click()
绑定到它的click事件,或者您可以拥有一个带有onClick
的对象,但是这个onClick
可以被禁用:)谢谢。是的,这是有道理的。我确实理解了prop
和attr
之间的基本区别,但我认为相关问题说使用prop
删除内联事件是奇怪的,然而prop
在添加内联事件时不起作用。但你们的解释很清楚,也很有帮助,我希望它能很好地服务于其他人。再次,我真诚地感谢你花时间处理这件事。再次感谢!
// There's only one div in this example
$( "div" ).prop( "onclick", null ).off( "click" );
// Does not add event
$( "div" ).prop( "onclick", "doSomething();" ).on( "click ");
// Neither does this
$( "div" ).prop( "onclick", "doSomething();" );
// This one works
$( "div" ).attr( "onclick", "doSomething();" );
// This one works, too
$( "div" ).attr( "onclick", "doSomething();" ).on( "click" );