2011-09-23 102 views
0

對不起,標題措辭!添加/刪除班級工作,但點擊新班級不會

我有JS:

$(".add").click(function(event) 
{ 
    cid=event.target.id; 
    alert("add class changed"); 
    $("#"+cid).addClass("del"); 
    $("#"+cid).removeClass("add"); 
}); 


$(".del").click(function(event) 
{ 
    cid=event.target.id; 
    alert("del class changed"); 
    $("#"+cid).addClass("del"); 
    $("#"+cid).removeClass("add"); 
}); 

和一些HTML這樣的:

<a class="add" id="1" href="#">test a</a> 
<a class="add" id="2" href="#">test b</a> 
<a class="add" id="3" href="#">test c</a> 

當我點擊的「測試」一個我得到的「添加類改爲」警戒和HTML顯示它的類已更改爲「del」。

但是,當我點擊其中一個改變的「測試」時,具有del類的東西的功能不運行,只是再次添加一個。

因此,類正在改變並相應顯示,但相應類的click函數沒有發生。 任何人都可以看到我要去哪裏錯了嗎?

編輯: 需要一個「LIVE」事件。 下面的代碼工作:

$(".add").live({ 
      click: function(event) 
       { 
        cid=event.target.id; 
        alert("add class changed"); 
        $("#"+cid).addClass("del"); 
        $("#"+cid).removeClass("add"); 
       } 
       }); 

回答

2

$(".add")只是選擇元素在那一刻add類。這並不意味着點擊事件會在它們的類更改時奇蹟般地分配給其他元素。

雖然這可以通過使用JQuery live方法來綁定事件來實現。

+0

謝謝,這聽起來像我需要的!然而,即使這樣的代碼:$(「。add」)。live({ });給我錯誤「$(」。add「)。live不是一個函數」 – penpen

+0

你的JQuery版本很老嗎? 1.3中增加了一種「實時」方法。我想,其他重載(你正在使用的那個)被加入1.4。請參閱文檔。 – GolezTrol

+0

哇我的jquery是1.2.1!我甚至不知道我是如何在我的項目中實現這個目標的...... 該代碼對我的更改非常有用(在編輯中)。 非常感謝你的幫助,非常感謝。 – penpen