Jquery遍历DOM以查找连续值

时间:2009-10-16 18:22:40

标签: javascript jquery dom jquery-selectors traversal

感谢您的回答,所有有用的答案都被投了票。 这是我的标记。我正在尝试按连续顺序找到内容为cmk1 and cmk2RIGHT的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">

3 个答案:

答案 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)') );
    } );

唯一的缺点是区分大小写。

相关问题