2011-06-22 20 views
1

"fave"から "faved"にクラスを変更する要素に対してclickイベントが発生しました。クラスが優先されたときに要素がクリックされた場合、新しいクリックイベントを発生させようとしています。それは発砲していない、ここに私のJavaScriptです。jquery clickイベントが発射されない

$("#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

ID「jobwall」を持っているHTML要素のどのような:あなたは本当にのような... event.preventDefault();を使用して検討すべき?すべての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;ステートメントがあなたの方法で得ているかのように見えました。私が何を意味するかのよう

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

Check out this jsFiddle例えば

関連する問題