Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery添加内联onclick事件_Javascript_Jquery_Events_Onclick_Inline - Fatal编程技术网

Javascript 使用jQuery添加内联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 $

这个问题其实是与我们有关的

假设我想稍后添加一个内联onclick事件。我尝试用
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" );