Jquery点击活动 - 梦魇!

时间:2010-10-30 10:09:24

标签: jquery

我有一个带有点击事件的链接按钮。单击时我想更改其单击事件处理程序以调用另一个方法。我正在使用这个:

$('#' + 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);

奇怪的是,只要我使用上面的代码绑定链接就会调用此方法。

4 个答案:

答案 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).