jQuery attr('onclick')

37

我正在尝试使用jQuery更改"onclick"属性,但它没有改变,这是我的代码:

$('#stop').click(function() {
     $('next').attr('onclick','stopMoving()');
}

我有一个id为"stop"的元素,当用户点击它时,我想要改变具有id="next"的元素上的onclick属性。

如果有人知道解决方法,请帮忙!


2
要通过 id 进行选择,您必须在 id 名称前加上 #,以给出选择器 $('#next'),这是您在第一个选择器中执行的操作,但在第二个选择器中省略了。 - David Thomas
2
另外,我发现 .attr('onclick') 找不到属性,而 .attr('onClick') 可以——尽管在 HTML 中该属性有小写的 'c'。 - Richard
4个回答

60

按照jQuery的方法进行操作(并修复错误):

$('#stop').click(function() {
     $('#next').click(stopMoving);
     // ^-- missing #
});  // <-- missing );

如果该元素已经通过 onclick 属性附加了 click 处理程序,那么您必须先将其移除:

$('#next').attr('onclick', '');

更新:正如@Drackir指出的那样,你可能还需要调用$('#next').unbind('click');来删除通过jQuery附加的其他点击处理程序。

但这只是猜测。像往常一样:更多信息=更好的答案。


1
使用Felix发布的代码。使用jQuery时,不应考虑更改元素的onclick属性,而是通过jQuery click()方法将单击事件侦听器附加到元素。 - Peter Perháč
1
你应该使用:$('#next').unbind('click'); 另外,你写成了 "onlick" 而不是 "onclick"。 :) - Richard Marskell - Drackir
1
@mikerobi:我认为你是指.one('click', stopMoving)。是的,也许......我们不确定。 - Felix Kling
1
它无法解决我的问题,我需要通过attr('element','value')的方式更改“onclick”属性的方法。 - Shalva Kakauridze
4
这类回答的问题在于它们没有回答问题。这些人没有意识到有时你正在处理其他人的代码。当然,通常情况下,你会使用jQuery中的click函数。当然。但是,我遇到了一个需要将某些内容附加到已经存在的onClick事件中的情况。HTML中有硬编码的变量。我无法更改HTML。 - Chris Harrison
显示剩余2条评论

17

正如@Richard在上面指出的那样,onClick需要有一个大写的'C'。

$('#stop').click(function() {
     $('next').attr('onClick','stopMoving()');
}

1
我想要的是这个。在HTML上编写onclick,而不仅仅是附加事件。 - Emdadul Sawon
你少了 #,应该是 $('#next') :) - Tran Audi

7
最简单的方法是将 .attr() 函数更改为 JavaScript 函数 .setAttribute()。
$('#stop').click(function() {
    $('next')[0].setAttribute('onclick','stopMoving()');
}

0

Felix Kling的方法是可行的(实际上比我更快),但我也建议使用

$('#next').die().live('click', stopMoving);

如果您在单击元素多次时遇到问题和奇怪的行为,这可能是更好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接