2011-06-22 175 views
1

我有一个单击事件的元素,它将类从“fave”更改为“faved”,然后尝试触发新单击的事件,如果元素被点击时它的类是faved,但它不是射击,这里是我的JavaScript。jquery click event not firing

$("#jobwall .fave").click(function(){ 
    var self = $(this); 
    $.ajax({ 
     url: "/favourites/save_employer", 
     type: "POST", 
     data: "employer_id="+self.attr('href'), 
     success:function() { 
      self.removeClass('fave'); 
      self.addClass('faved'); 
     } 
    }); 
    return false; 
}); 

$(".faved").live("click", function(){ 
    alert("!!"); 
    return false; 
}); 
+0

什么样的HTML元素的ID为“jobwall”?这很重要,因为不是所有的HTML元素都允许onClick事件。 – reporter

回答

5

您可能会将.click()事件包括到新对象中,而不是使用.live()。 像这样:

$("#jobwall .fave").click(function(){ 
    var self = $(this); 
    $.ajax({ 
     url: "/favourites/save_employer", 
     type: "POST", 
     data: "employer_id="+self.attr('href'), 
     success:function() { 
      self.removeClass('fave'); 
      self.addClass('faved'); 
      self.click(function(){alert("!!"); return false;}); 
     } 
    }); 
    return false; 
}); 

的.live()方法是用于添加元素,不改变。记住这一点。

More information about .live() here

好运:d


更新

在jQuery 1.7中,.live()方法已经过时了。使用.on()附加事件处理程序。

1

从周围的混乱我看起来好像这些return false;陈述正在你的方式。你真的应该考虑使用event.preventDefault(); ...这样:

$("#jobwall .fave").click(function(event){ 
    event.preventDefault(); 

Check out this jsFiddle为例,以我的意思