Câu trả lời:
Tại sao không duyệt trang chọn (ngắn) trước?
Đây là: :eq()
toán tử. Nó được sử dụng giống như get()
, nhưng nó trả về đối tượng jQuery.
Hoặc bạn có thể sử dụng .eq()
chức năng quá.
.eq()
phù hợp hơn cho câu hỏi của OP. :eq()
được sử dụng trong tham số chuỗi $
, trong khi đó .eq()
là một phương thức trên một đối tượng jQuery hiện có.
$('select').find('option').eq(n)
về cơ bản sẽ bỏ qua việc nhóm, và có được tất cả các tùy chọn nói chung. Nếu bạn muốn nó cho mỗi nhóm, một cái gì đó như thế này là cần thiết:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Bạn có thể sử dụng : eq selector, ví dụ:
$("td:eq(2)").css("color", "red"); // gets the third td element
Hoặc hàm eq (int) :
$("td").eq(2).css("color", "red");
Ngoài ra, hãy nhớ rằng các chỉ mục là không dựa trên.
:nth()
bộ chọn - không bị nhầm lẫn với:nth-child()
nếu bạn có quyền kiểm soát truy vấn xây dựng đối tượng jQuery, hãy sử dụng :eq()
$("div:eq(2)")
Nếu bạn không có quyền kiểm soát nó (ví dụ: nó được truyền từ chức năng khác hoặc thứ gì đó), thì hãy sử dụng .eq()
var $thirdElement = $jqObj.eq(2);
Hoặc nếu bạn muốn một phần của chúng (giả sử, các yếu tố thứ ba, thứ tư và thứ năm), hãy sử dụng .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
thay vì :eq()
thực sự. Tăng hiệu suất nhẹ.
.eq () -Một số nguyên chỉ vị trí dựa trên 0 của phần tử.
Ví dụ:
Hãy xem xét một trang với một danh sách đơn giản trên đó:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Chúng ta có thể áp dụng phương pháp này cho tập hợp các mục danh sách:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Nếu bạn đã có đối tượng jquery trong một biến, bạn cũng có thể coi nó như một mảng được lập chỉ mục bình thường mà không cần sử dụng jquery:
var all_rows = $("tr");
for(var i=0; i < all_rows.length; i++){
var row = all_rows[i];
//additionally, you can use it again in a jquery selector
$(row).css("background-color","black");
}
Mặc dù ví dụ trên không hữu ích theo bất kỳ cách nào, nhưng nó đại diện cho cách bạn có thể coi các đối tượng được tạo bởi jquery như các mảng được lập chỉ mục.
<select>
thành phần và bạn muốn phần tử combobox được chọn, hãy sử dụng$(row).val();
Nếu tôi hiểu chính xác câu hỏi của bạn, bạn luôn có thể chỉ cần bọc hàm get như vậy:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
mang lại cho bạn miễn phí.
Nếu bạn muốn tìm nạp phần tử / nút hoặc thẻ cụ thể trong vòng lặp, ví dụ:
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Vì vậy, từ vòng lặp mã ở trên được thực thi và chúng tôi muốn chọn trường cụ thể mà chúng tôi phải sử dụng lựa chọn jQuery có thể chỉ chọn phần tử mong đợi từ vòng lặp trên, vì vậy, mã sẽ được
$('.weekdays:eq(n)');
ví dụ
$('.weekdays:eq(0)');
cũng như bằng phương pháp khác
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
nhưng phương thức đầu tiên hiệu quả hơn khi HTML <tag>
có tên lớp duy nhất.
LƯU Ý: Phương thức thứ hai được sử dụng khi chúng không có tên lớp trong phần tử đích hoặc nút.
để biết thêm theo dõi https://api.jquery.com/eq/
Đối với các lần lặp sử dụng bộ chọn dường như không có ý nghĩa gì cả:
var some = $( '...' );
for( i = some.length -1; i>=0; --i )
{
// Have to transform in a jquery object again:
//
var item = $( some[ i ] );
// use item at will
// ...
}
<html>
<head></head>
<body>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('li:eq(1)').hide();
});
</script>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
</body>
</html>
Khi nó chạy, có hai mục trong danh sách được sắp xếp hiển thị, Thứ nhất và Thứ ba. Thứ hai đã bị ẩn.
$(function(){
$(document).find('div').siblings().each(function(){
var obj = $(this);
obj.find('div').each(function(){
var obj1 = $(this);
if(!obj1.children().length > 0){
alert(obj1.html());
}
});
});
});
<div id="2">
<div>
<div>
<div>XYZ Pvt. Ltd.</div>
</div>
</div>
</div>
<div id="3">
<div>
<div>
<div>ABC Pvt Ltd.</div>
</div>
</div>
</div>
.eq()
thay vì:eq()
?