2010-08-04 82 views
2

我有一個表,其中有行,它們都有一個div的單元格,其格式爲btn-insertidhere。jquery動態ID選擇器,刪除然後添加類

當選中表格行時,我想選擇此div ID,然後刪除一個類並將其更改爲另一個類。這是我想要一個按鈕圖像從添加符號更改爲刪除符號,當點擊。

javascript代碼:

$('*[class^=day] tbody tr[id^=band]').live('click', function() { 
     var DivId = $(this).find('div.add').attr('id'); 
     alert(DivId); 

     $('DivId').removeClass('add').addClass('del'); 
     $('table#fri_myTimes tbody').append($(this)).fadeIn(1000); 
     return false; 
}); 

這是動態生成的代碼的HTML片段:

<tr id="band-Modest-Mouse"> 
<td>Modest Mouse</td> 
<td>15:25:00</td> 
<td>16:10:00</td> 
<td>45</td> 
<td><div id="btn-Modest-Mouse" class="add">&nbsp;</div></td> 
</tr> 

正如你可以看到我想要的「添加」類更改爲刪除「類」。表格中的所有表格行都是這樣生成的,所以你可以看到我已經去了通配符方法,這似乎工作,因爲顯示的警報顯示正確的div ID。我只需要改變班級!

謝謝!

回答

7

您可能已通過刪除 '.attr(ID)' 的一部分

var DivId = $(this).find('div.add'); 
... 
$(DivId).removeClass('add').addClass('del'); 

以獲取股利的JQ對象或DIVID選擇添加#

$("#" + DivId).removeClass('add').addClass('del'); 
+0

兩個解決方案工作!非常感謝你。出於好奇,哪種方式更好? .find()方法或獲取.attr(id)方法? – jp577 2010-08-05 00:08:46

+0

更好地使用第一個...發現你已經有div包裹在一個jquery對象中,你不需要再次找到它,就像在第二種情況下那樣... – Jaime 2010-08-05 00:34:30

1

嘗試刪除DivId周圍的引號。這是一個變量名,不應該用引號引起來。因此:

$(DivId).removeClass('add').addClass('del'); 
+0

它在附加到新表格時保留「添加」類。有什麼想法嗎? – jp577 2010-08-05 00:05:41

+0

對不起,海梅回答說,我可以改正這一點。 – calvinf 2010-08-05 00:18:51

1

由於您的變量DIVID是一個jQuery對象,你不需要在$()所有:

DivId.removeClass('add').addClass('del');