当td id已知时,在jquery中设置td背景颜色

时间:2012-08-14 23:29:49

标签: javascript jquery html css

我有一个jquery函数,它获取td的id值,其复选框被选中。 我需要给那些td上色。我写过这个函数,它不会给我任何错误,但也不会给td着色..

这是功能:

$('#custom-interval-tbl td').each(function() {
 $(this).find('input:checkbox:checked').each(function() {      
    var tdId= $(this).attr("id");
    var tdElement = $("#custom-interval-tbl td").eq(tdId); 
    console.log("TD Element"+tdElement);        
    tdElement.css({background:"#333333"});
    });
});

有人可以告诉我,我在做什么错误吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

jsFiddle DEMO

问题是你正在使用.eq()(这是基于索引的),但你给的是复选框的id

另外,请不要使用:text /:checkbox / etc,这些在jQuery中已弃用,最好使用原生[type="checkbox"]等。

$('#custom-interval-tbl td').each(function() {
    $(this).find('input[type="checkbox"]:checked').each(function() {
        // You don't need to find out ID or anything.
        // Just go up to the closest <td> and give it the background

        var tdElement = $(this).closest('td');     
        tdElement.css({ background : "#333333" });
    });
});​

答案 1 :(得分:1)

我认为这里的问题是第二个函数中的this引用了checkbox,而不是td。试试这个:

$('#custom-interval-tbl td').each(function() {
 $(this).find('input:checkbox:checked').each(function() {      
    var tdElement = $(this).parent("td");
    console.log("TD Element"+tdElement);        
    tdElement.css({background:"#333333"});
    });
});