Làm cách nào để chọn số <tr>
chứa trẻ em <div class="test">
, như sau?jQuery - chọn cha mẹ theo lớp con?
<table>
<tr> <!-- this tr is what I want to select -->
<td>
<div class="test"> text </div>
</td>
</tr>
</table>
Làm cách nào để chọn số <tr>
chứa trẻ em <div class="test">
, như sau?jQuery - chọn cha mẹ theo lớp con?
<table>
<tr> <!-- this tr is what I want to select -->
<td>
<div class="test"> text </div>
</td>
</tr>
</table>
Bạn có thể sử dụng parents
hoặc closest
cho rằng, tùy thuộc vào nhu cầu của bạn:
$("div.test").parents("tr");
// Or
$("div.test").closest("tr");
(Bộ chọn ban đầu có thể được bất cứ điều gì phù hợp với div
của bạn, vì vậy ".test"
sẽ là tốt quá.)
parents
sẽ nhìn toàn bộ cây lên, có thể khớp với nhiều phần tử tr
nếu bạn có bảng trong bảng. closest
sẽ dừng với số tr
đầu tiên mà nó gặp phải đối với mỗi số div
giây.
Dưới đây là một ví dụ sử dụng closest
:
HTML:
<table>
<tr id="first"> <!-- this tr I want to select -->
<td>
<div class="test"> text </div>
</td>
</tr>
<tr id="second"> <!-- this tr I want to select -->
<td>
<div class="test"> text </div>
</td>
</tr>
<tr id="third"> <!-- this tr I want to select -->
<td>
<div class="test"> text </div>
</td>
</tr>
</table>
JavaScript:
jQuery(function($) {
var rows = $("div.test").closest("tr");
display("Matched " + rows.length + " rows:");
rows.each(function() {
display("Row '" + this.id + "'");
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
Output:
Matched 3 rows: Row 'first' Row 'second' Row 'third'
$('.test').parent('tr')
này lựa chọn chính xác những gì bạn muốn.
$('.test').parent().parent();
hoặc $('.text').parent().closest('tr');
dưới đây nhắm vào phụ huynh với lớp của .test nơi nào đó trong con của nó và trong bên dưới ví dụ thay đổi nền thành màu đỏ ...
$(document).ready(function(){
$('.test').parents('tr').css('background-color', 'red');
});
Đối với tôi điều này cực kỳ mạnh mẽ khi cố gắng nhắm mục tiêu html được xuất từ thiết kế. Mạnh mẽ bởi vì indesign không cho phép bạn gắn thẻ nhưng thông qua điều này bạn có thể gắn thẻ một và sau đó thông qua JQuery này.