2010-09-15 79 views
0

由于某种原因jQuery.addClass已停止工作。我不知道为什么。 其他的东西虽然工作。jQuery addClass停止工作

// Change row background color on click 
    jQuery('#rowList tr').live("click", function() { 
    alert(jQuery(this).attr('title')); // Just here for testing. This works 
    alert(jQuery(this).css('border','solid 1px red')); // Just here for testing. This works 

    jQuery(this).closest("tr").siblings().removeClass("selected"); 
    jQuery(this).addClass("selected"); // NOT working 
    }); 

为什么这不起作用的原因?这是我的HTML:

<table id="rowList"> 
    <tbody> 
    <tr title="My title 1" class="imageItem odd"> <td>some stuff</td></tr> 
    <tr title="My title 2" class="imageItem even"><td> some stuff here</td></tr> 
    </tbody> 
</table> 
+0

你是否试图在'tr'或'td'中添加'class =“选择”''? – 2010-09-15 16:48:49

+0

我正在将类添加到'tr' – Steven 2010-09-15 18:19:55

回答

3

你有第二警报缺少)

alert(jQuery(this).css('border','solid 1px red')); 
              ^

一旦你解决,它的作品,you can test it here。顺便说一句,因为你是在<tr>,没有必要为.closest("tr")呼叫,您可以从链中删除,这样的事情总:

CSS:

.bordered { border: solid 1px red; } 

脚本:

jQuery('#rowList tr').live("click", function() { 
    alert(jQuery(this).attr('title')); 
    jQuery(this).addClass("bordered selected") 
       .siblings().removeClass("selected"); 
});​ 

You can give it a go here

+0

这些警报只是用于测试 - 而我只是一个错字。这是addClass不起作用。这直到现在一直工作。 – Steven 2010-09-15 16:57:36

+0

@Steven - 它在我的演示程序中工作...这里很简单的行为,是否有可能你的CSS是类似'td.className'而不是'tr.className'? – 2010-09-15 17:01:22

+0

我删除了两行jQuery来添加/删除类,然后它的工作....所以一定有别的东西搞砸我的系统。但是感谢短代码 - 少开销。 – Steven 2010-09-15 18:19:13

0

因为您编写它的方式是.addClass(),所以将类添加到td而不是父tr

除非遗漏closest('tr')是错字吗?

+0

当然,@尼克的建议似乎更有可能... – 2010-09-15 16:47:59