1

感谢您的关注,所有有用的答案都被投票赞成。这是我的标记。我试图找到 2 个连续cmk1 and cmk2的 div 内容RIGHTHERE连续的顺序。

  • div id 1不应该匹配,因为有 a rightbut not here
  • div id 3不应该匹配,因为有 ahere但没有right
  • 我试图找到看起来像div id 2whereright后面跟着的东西here。文本也必须准确:<div>more than right</div>即使它包含单词也不应该匹配right

最有效的方法是什么?

更新:我刚刚想到,我可以找到each class=cmk1. 如果它匹配正确,我可以选择它的next(cmk2),如果它也匹配,这就是我正在寻找的。但是如何while在 jquery 中执行此循环?最重要的是我如何退出它?

<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">
4

3 回答 3

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是否包含第二个单词。

于 2009-10-16T18:33:13.600 回答
1
$(':contains(RIGHT) :contains(HERE)')
于 2009-10-16T18:27:11.163 回答
1

尝试:

$(':contains(right), :contains(here)')
    .filter( function() {
        return ( $(this).text() == 'right' && $(this).next().is(':contains(here)') ) ||
            ( $(this).text() == 'here' && $(this).prev().is(':contains(right)') );
    } );

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

于 2009-10-16T18:32:09.313 回答