2010-08-04 83 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');