Jquery交叉选择器

时间:2011-08-18 16:48:05

标签: jquery

我确定答案存在于某个地方,但我对于要搜索的术语感到茫然。如果这是重复的话,请道歉。

在jQuery / JS中是否有一种简单的方法可以从以下HTML中选择“相交”的元素?

<div id="first">
  <div id="source-AAA"/>
  <div id="source-CCC"/>
  <div id="source-EEE"/>
  <div id="source-FFF"/>
</div>
<div id="second">
  <div id="BBB"/>
  <div id="CCC"/>
  <div id="DDD"/>
  <div id="FFF"/>
</div>

即。基于这两个ID位于#CCC的事实,从#FFF获取元素div#second#first

我想正确的答案是在服务器端进行交叉(这是可能的,但很痛苦,因为这两个数据集来自不同的组件),但我想我会检查以防有人知道在jQuery中做到这一点的巧妙方法?

3 个答案:

答案 0 :(得分:2)

首先必须收集所有这些ID,然后相应地构建一个CSS选择器字符串:

var divsToSelect = [];

$('#first div').each(function(){
    divsToSelect.push( $(this).attr('id').substr(-3) );
});

$('#' + divsToSelect.join(',#'));

http://jsfiddle.net/TXqw3/

答案 1 :(得分:1)

您可以使用过滤器 -

$("#second div").filter(function() {
    return $("#first > div[id$=" + this.id + "]").length > 0
})

演示 - http://jsfiddle.net/b9NZR/

答案 2 :(得分:0)

为什么不是客户?

    $('div#first > div').each(function(){
      var fv = $(this).attr('id');
      $('div#second > div').each(function(){
         var sv = $('div').attr('id');
         if (fv.indexOf(sv) > -1){
            // do something
         }
      });
    });

当然,我不是专家,而是一线。