2013-01-06 110 views
2

這是我的代碼,選擇前一個元素 - jQuery的

<tr> 
    <td> 
     <input type="checkbox" class="cbx" name="cbx"> 
    </td> 
    <td> 
     <div>some content</div> 
    </td> 
    <td> 
     <span class="book">Book now</span> 
    </td> 
</tr> 

我在我的網頁與此類似大約20錶行。我想要做的是,當我點擊行中第3個td的span標籤時,應該檢查哪個複選框在同一行。

我已經試過,但它不工作,

$('.book').click(function() { 
    $(this).parent().find('.cbx').attr('checked',true); 
}); 

請幫我達不到這個,

問候。

+2

'$(本).parent()'只會看裏面那''​​做這可能是簡單的。或者'.parent()'兩次,或者做一個更優雅的解決方案,比如roXon's。 –

回答

2

簡單,使用.closest()方法找到tr比去搜索您的.cbx! :)

$('.book').click(function() { 
    $(this).closest('tr').find('.cbx').prop('checked',true); 
}); 

您的例子是指向你TD元素,因爲你以前只使用.parent()
爲了達到TR而不是使用.parent().parent()使用只是.closest('tr')

http://api.jquery.com/closest/
http://api.jquery.com/prop/

+0

謝謝soooooo多roxon。它的工作就像一個魅力。對不起,我無法投票給你我的狀態。 – user1915190

+0

@ user1915190啊...... :)真的很受歡迎:) –

+0

@ user1915190你不能投票,但你可以接受答案!通過點擊*投票箭頭附近的**'V'**選中標記* –

1

在你的代碼.parent()將選擇父<td>節點。爲了選擇<tr>,你應該使用.parent().parent().closest("tr")

$(".book").on("click", function() { 
    $(this).closest("tr").find(".cbx").prop("checked", true); 
}); 

注意,最好是申請.prop("checked", true).attr("checked", "checked")

+0

非常感謝。它的工作 – user1915190

1

$('.book').on('click', function() { 
    var $tr = $(this).parents('tr').eq(0); 
    // get the parenting tr 

    $('.cbx', $tr).attr('checked', true); 
    // select elements matching '.cbx' inside of $tr and check them 
});