2011-06-22 230 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爲例,以我的意思