在removeClass之后仍然触发JQuery类选择器

我正在创建一个小型投票机制,通过AJAX发送快速数据库时间戳。

一系列具有“投票”类别的按钮是投票的触发器,而下面的文本显示该特定项目有多少“投票”。

从click事件运行AJAX方法后,我删除了“vote”类,使得该项不能有多个。 但是我的问题是,即使删除了类,触发器仍然可以触发并增加投票数。

这是元素的HTML:

'.$idea['id'].'

'.$points.' Points

这是jQuery调用:

  $('.vote').click(function(){ var iID = $(this).attr('alt'); var typeString = "id="+iID; $.ajax({ type: "POST", url:"vote.php", data: typeString, success: function (txt){ $('.vote-'+iID).html('

'+txt+' Points

'); } }); $(this).attr('src', 'images/voted.gif'); $(this).removeClass('vote'); });

DOM元素的class用于引用它,而不是改变它的Event绑定行为。

要删除DOM元素,请单击事件使用unbind 。

您将事件处理程序附加到DOM元素,并保持不变。 你也可以

一个。 像这样设置.data('triggered', 1)

 if ( !$(this).data('triggered') ) { // do code $(this).data('triggered', 1); } 

 if ( $(this).hasClass('vote') ) { // do code } 

C。 使用.live而不是.click,例如$('.foo').live('click', fn)

d。 在调用代码后手动删除事件处理程序, $(this).unbind('click')作为删除类位后的最后一行

选择器仅在首次调用时进行一次评估。 每次触发事件时都不会重新评估它以检查哪些元素匹配; 那会很慢。