0

我只是在 FireBug 中调试 jQuery,并想知道返回值

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

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

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

这意味着它可以被视为一个字符串对象。但是当我这样使用时它会报错。

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

4

3 回答 3

3

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

在 jQuery < 1.6 中。这是因为在 1.6 之前,.attr()在它认为合适的地方混合了检索属性和属性,较新的版本删除了那层巫术,现在有适当的方法来检索属性 ( .attr) 和属性 ( .prop)。

这是一个演示上述内容的小提琴。

附言。顺便说一句,它不返回事件对象,而是作为事件处理程序的函数对象。=]


此外,还有两个注意事项:您应该始终将您的 jquery 升级到可行的最新版本(当前为 1.8.3),它具有更多功能、更好的性能和许多错误修复。

当您拥有 jQuery 时,您不应该真正使用onclicks,这违反了 Web 2.0 分离结构 (html) 和行为 (js) 的标准 - jQuery 本身提供了附加方法的跨浏览器处理程序.on()(对于 jQuery 1.7+ ),和//.bind对于旧版本。.delegate.live

于 2012-12-18T13:20:15.580 回答
1

我假设您想更改某些元素的 onclick 属性的值。

$('.a-selector').attr('onclick',''); // leave 2nd parameter blank if you want to remove its value

或者

$('.a-selector').attr('onclick','myfunc()');
############################### 编辑

您可以如下定义您的功能:

<script>
    function myfunc(){
        // Do stuff here
    }
</script>
于 2012-12-18T12:34:56.260 回答
0

您是否有可能重置点击事件?

$('.a-selector').unbind('click').click(function() {
    // new function
});

替换 javascript 代码中的文本通常不是 javascript 应该做的。我认为可能有更好的解决方案。

于 2012-12-18T12:33:41.403 回答