当jQuery .attr(’onclick’)函数返回一个事件对象?
我只是在FireBug中调试jQuery并且想知道返回值
$('.a-selector').attr('onclick');
事实certificate它是一个onclick(event)
,但我之前已经读过一些代码,作者只是像这样使用它:
$('.a-selector').attr('onclick').replace(..., ...);
这意味着它可以被视为一个String对象。 但是当我像这样使用它时报告错误。
我的jQuery版本是1.5.2。 所以我想知道jQuery何时更改了API以及更改HTML中定义的onclick
事件的最佳方法是什么。
当jQuery
.attr('onclick')
函数返回一个事件对象?
在jQuery <1.6。 这是因为在1.6之前, .attr()
在检索属性和属性之间进行了混合,新版本删除了那层巫术,现在有适当的方法来检索属性( .attr
)和属性( .prop
)。
这是展示上述内容的小提琴 。
PS。 顺便说一下,它不返回事件对象,而是返回一个充当事件处理程序的函数对象。 =]
此外,还有两个侧面注意事项:您应该始终将jquery升级到最新版本(当前为1.8.3),它具有更多function,更好的性能和许多错误修复。
当你有jQuery时,你不应该真正使用onclick
,这违反了结构(html)和行为(js)分离的Web 2.0标准 – jQuery本身提供了附加方法的跨浏览器处理程序.on()
(对于jQuery 1.7+)和.bind
/ .delegate
/ .live
用于旧版本。
我假设您要更改某个元素的onclick属性的值。
$('.a-selector').attr('onclick',''); // leave 2nd parameter blank if you want to remove its value
要么
$('.a-selector').attr('onclick','myfunc()');
###############################编辑
您可以按如下方式定义您的function:
您是否有可能重置点击事件?
$('.a-selector').unbind('click').click(function() { // new function });
替换javascript代码中的文本通常不是javascript应该做的。 我认为有更好的解决方案可行。