2010-02-05 80 views
1

我困在一個小小的jQuery問題。我有一個由php循環生成的鏈接集合(超過50個)。當用戶點擊一個鏈接時,jQuery加載事件被調用,並且一個php/mysql腳本(在下面的例子中稱爲page.php)被加載到頁面上的空白div中。jQuery:刪除類一旦元素被點擊

我想將類(「.classy」)從< a>標記中移除,並替換爲另一個類(「.newclass」)。這是爲了僅在第一次點擊時加載信息。

的HTML:

<a class='classy' name='marvin'>Click to toggle info</a> 
<div id='marvin'></div> 

jQuery的:

$(document).ready(function(){ 
    $(".classy").click(function(){ 
     var foo = $(this).attr("name"); 
     $("#"+foo).load("page.php?id="+foo).slideToggle('fast'); 
     $(this).removeClass('classy'); 
     $(this).addClass('newclass'); 
     return false; 
    }); 
}); 

謝謝!

+0

的代碼看起來好像沒什麼問題? (除了你應該做$(this).removeClass('classy')。addClass('newclass')的簡潔)你有沒有試過看看螢火蟲發生了什麼? – 2010-02-05 17:41:00

回答

1

並不積極 - 但你可能需要做這樣的(使用$ .live())來代替:

$(document).ready(function(){ 
    $(".classy").live('click', function(){ 
     var foo = $(this).attr("name"); 
     $("#"+foo).load("page.php?id="+foo).slideToggle('fast'); 
     $(this).removeClass('classy').addClass('newclass'); 
     return false; 
    }); 
}); 
2

僅因爲您更改班級並不意味着從鏈接中刪除click事件處理程序。您需要手動解除綁定或添加一個if語句來檢查鏈接所屬的類。

或使用live函數綁定click事件。

+0

啊,是的,這很有道理,謝謝澄清。 – superUntitled 2010-02-05 17:50:07