当jQuery .attr('onclick')函数返回一个事件对象?

时间:2012-12-18 12:31:09

标签: javascript jquery attr

我只是在FireBug中调试jQuery,并且想知道

的返回值
$('.a-selector').attr('onclick');

原来是onclick(event),但我之前已经阅读了一些代码,作者只是这样使用它:

$('.a-selector').attr('onclick').replace(..., ...);

表示可以将其视为String对象。但是当我像这样使用它时会报告错误。

我的jQuery版本是1.5.2。所以我想知道jQuery何时更改API以及更改HTML中定义的onclick事件的最佳方法是什么。

3 个答案:

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