感谢您的回答,所有有用的答案都被投了票。
这是我的标记。我正在尝试按连续顺序找到内容为cmk1 and cmk2
和RIGHT
的2个连续div HERE
。
div id 1
不匹配,因为有right
但不是here
。 div id 3
不匹配,因为有here
但没有right
。 div id 2
的内容,其中right
后跟here
。此外,文字必须准确:<div>more than right</div>
即使包含单词right
最有效的方法是什么?
更新:我刚才想到了,我找到了each
class=cmk1
。如果它匹配RIGHT,我可以选择它的next
(cmk2),如果它也匹配,那就是我正在寻找的。但是如何在jquery中执行此while
循环?最重要的是我如何退出呢?
<div class="sep" id="1">
<div class="cmk1">right</div>
<div class="cmk2">valc</div>
<div class="opp">vald</div>
<a class="go">Go</a>
</div>
<div class="clear">
<div class="sep" id="12">
<div class="cmk1">RIGHT</div>
<div class="cmk2">HERE</div>
<div class="opp">vala</div>
<a class="go">Go</a>
</div>
<div class="clear">
<div class="sep" id="59">
<div class="cmk1">vale</div>
<div class="cmk2">valf</div>
<div class="opp">here</div>
<a class="go">Go</a>
</div>
<div class="clear">
答案 0 :(得分:3)
$('div.sep > div').each(function() {
if($(this).text() == 'RIGHT') {
if($(this).next('div').text() == 'HERE') {
alert('Values occur consecutively in div id: ' + $(this).parent().attr('id'));
return false;
}
}
});
我基本上已经遍历了每个.sep div的所有子div并测试了第一个单词。如果匹配,next
可用于确定下一个div是否包含第二个单词。
答案 1 :(得分:1)
$(':contains(RIGHT) :contains(HERE)')
答案 2 :(得分:1)
尝试:
$(':contains(right), :contains(here)')
.filter( function() {
return ( $(this).text() == 'right' && $(this).next().is(':contains(here)') ) ||
( $(this).text() == 'here' && $(this).prev().is(':contains(right)') );
} );
唯一的缺点是区分大小写。