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