当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应该做的。 我认为有更好的解决方案可行。