2012-08-14 20 views
1

我有一個jquery函數,該函數獲取其複選框被選中的td的id值。 我需要爲這些td着色。我寫了這個功能,它並沒有給我任何錯誤,但沒有顏色運輸署也..設置td背景顏色在jQuery中當知道td id的時候

下面是函數:

$('#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"}); 
    }); 
}); 

是否有人可以告訴我,我在做什麼錯誤?

感謝您的幫助。

回答

1

jsFiddle DEMO

的問題是你使用.eq()(這是基於索引的),但你給它的複選框的id

在一個側面說明,不要使用:文/:複選框/等等,這些都是內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" }); 
    }); 
});​ 
+0

非常感謝。像魅力一樣工作! – user1028428 2012-08-15 00:40:29

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"}); 
    }); 
});