我有一个带有点击事件的链接按钮。单击时我想更改其单击事件处理程序以调用另一个方法。我正在使用这个:
$('#' + test).bind('click', function () { return LikeComment(test, CommentsWrapper, activityID, textAreaID, btnAddCommentID, addCommentBox, textUnLike, textLike, likeWrapperID); });
下次单击时,我将其绑定:
$('#' + test).bind('click', function () { return UnLikeComment(test, CommentsWrapper, activityID, textAreaID, btnAddCommentID, addCommentBox, textUnLike, textLike, likeWrapperID); });
事情是处理程序正在缓冲。第二次单击链接时,会调用2个方法。
没有任何帮助。我使用了unbind()同样的东西。
有什么建议吗?
更多信息
链接按钮的初始状态如下:
<a class='activitysmalllink' href='javascript:void' id='{0}' onclick='return LikeComment( ... ) '
当我单击LIKE链接按钮时,我调用此代码:
$('#' + test).bind('click', function () { return deleteLikeComment(test, CommentsWrapper, activityID, textAreaID, btnAddCommentID, addCommentBox, textUnLike, textLike, likeWrapperID); });
$('#' + test).text(textUnLike);
奇怪的是,只要我使用上面的代码绑定链接就会调用此方法。
答案 0 :(得分:2)
有些东西搞砸了你的unbind
:你能提供更多代码吗?
作为一种替代方案(以及更好的解决方案),请问toggle()
呢?
$('#' + test).toggle(function () { return LikeComment(test, CommentsWrapper, activityID, textAreaID, btnAddCommentID, addCommentBox, textUnLike, textLike, likeWrapperID); },
function () { return UnLikeComment(test, CommentsWrapper, activityID, textAreaID, btnAddCommentID, addCommentBox, textUnLike, textLike, likeWrapperID); });
您也可以使用one()
代替bind()
答案 1 :(得分:2)
Unbind()取消绑定之前绑定的事件与jQuery的绑定 但在您的情况下,事件最初列在元素
中<a onclick='return LikeComment...
...所以它不会受到unbind()
的影响使用attr()代替unbind()
$('#' + test).attr('onclick','').bind('click','...')
...在第一次绑定之前。 如果你不想检查它是否是第一个电话,你可以随时使用
$('#' + test).attr('onclick','').unbind('click').bind('click','...')
答案 2 :(得分:0)
在重新绑定之前,您需要解除绑定。
只需在$('#'+ test)和.bind之间加上.unbind('click')(每个语句都有'click'。
答案 3 :(得分:0)
我认为问题是$('#' + test).
首先将变量定义为var a='#' + test;
,然后将jquery语句定义为$(a).
。