Nếu bạn đang mắc kẹt với cấu trúc đó, bạn đang tìm kiếm nextUntil
, có thêm các yếu tố theo dõi cho đến khi (và không bao gồm) một yếu tố phù hợp với bộ chọn bạn vượt qua nó:
var n = 2;
$("p:contains(Page " + n + ")").nextUntil("p:contains(Page " + (n + 1) + ")").css('background-color', 'red');
(Sống dụ bên dưới.)
Điều đó chỉ chọn các đoạn sau đoạn "Trang n", không phải chính đoạn "Trang n". Nếu bạn cũng muốn bao gồm các "trang n" đoạn văn, sử dụng addBack
(trước đây andSelf
, nhưng andSelf
đã phản đối ủng hộ addBack
trong v1.8), như thế này:
var n = 2;
$("p:contains(Page " + n + ")")
.nextUntil("p:contains(Page " + (n + 1) + ")")
.addBack()
.css('background-color', 'red');
Nhưng nếu bạn có thể sửa đổi cấu trúc , tôi có lẽ muốn đưa các nội dung của mỗi trang trong một yếu tố wrapper, chẳng hạn như section
:
<section data-page="1">
<h1>Page 1</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</section>
<section data-page="2">
<h1>Page 2</h1>
<p>First line.</p>
<p>Some text here.</p>
<p>Some other text here.</p>
</section>
<section data-page="3">
<h1>Page 3</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</section>
Lưu ý rằng tôi cũng bao gồm một thuộc tính data-*
xác định các trang (cũng đã thay đổi đoạn văn có chứa các số trang để h1
; spec đề xuất bao gồm một h1
- h6
yếu tố để xác định phần). Sau đó, nó sẽ chỉ đơn giản là:
$("section[data-page=" + n + "] > p").css(/*...*/);
sống ví dụ sử dụng cấu trúc hiện tại (mà khôngaddBack
):
var colors = {
1: "red",
2: "green",
3: "blue"
};
var n;
for (n = 1; n <= 3; ++n) {
$("p:contains(Page " + n + ")").nextUntil("p:contains(Page " + (n + 1) + ")").css('background-color', colors[n]);
}
<p>Page 1</p>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Page 2</p>
<p>First line.</p>
<p>Some text here.</p>
<p>Some other text here.</p>
<p>Page 3</p>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Nguồn
2015-04-09 08:33:26
Bạn có thể sửa đổi HTML? Nếu vậy, sau đó làm cho cuộc sống của bạn dễ dàng hơn bằng cách gói chúng trong 'div'. –
Tôi đang ở với Sverri ở đây - nếu bạn không biết số đoạn văn, người ta có thể đề xuất chúng đến từ một hệ thống CMS? chỉ quấn nó lên –