每组没有父母

时间:2013-07-30 22:45:26

标签: jquery

我有几组链接,例如:

<a href="http://google.com/b">http://google.com/b</a>
<a href="http://google.com/a">http://google.com/a</a>
<a href="http://stackoverflow.com/g">http://stackoverflow.com/g</a>
<a href="http://google.com/c">http://google.com/c</a>
<a href="http://stackoverflow.com/a">http://stackoverflow.com/a</a>
<a href="http://en.wikipedia.org/c">http://en.wikipedia.org/c</a>
<a href="http://en.wikipedia.org/a">http://en.wikipedia.org/a</a>
<a href="http://en.wikipedia.org/b">http://en.wikipedia.org/b</a>

我需要对google.com链接和wikipedia.org链接进行排序,并保持其位置,但我的问题不在于排序。关于元素组迭代的问题。对于我的例子,它将是:

$("a[href*='google.com'], a[href*='en.wikipedia.org']").each(function(){

  // I need in $(this) google.com links in first iteration, and wikipedia.org links in second 

});

有没有本地方法可以做到这一点?

PS包装()是不可能的,我不想做任何additional functions

3 个答案:

答案 0 :(得分:2)

您可以改用以下内容:

$('a[href*="google.com"]').add('a[href*="en.wikipedia.org"]').each(...);

有关示例,请参阅此jsFiddle

答案 1 :(得分:2)

如果您只是尝试按域分组处理它们,则可以迭代域并查找相关元素:

$.each(['google.com', 'en.wikipedia.org'], function (_, domain) {
    var links = $('a[href*="' + domain + '"]');

    // 1st round will have `google.com` links, 2nd `en.wikipedia.org`
});

然后您可以使用.wrapAll()将每个集合包装在一个元素中:

links.wrapAll('<div>');

示例:http://jsfiddle.net/AmYCk/

<div>
    <a href="http://google.com/b">http://google.com/b</a>
    <a href="http://google.com/a">http://google.com/a</a>
    <a href="http://google.com/c">http://google.com/c</a>
</div>

<a href="http://stackoverflow.com/g">http://stackoverflow.com/g</a>
<a href="http://stackoverflow.com/a">http://stackoverflow.com/a</a>

<div>
    <a href="http://en.wikipedia.org/c">http://en.wikipedia.org/c</a>
    <a href="http://en.wikipedia.org/a">http://en.wikipedia.org/a</a>
    <a href="http://en.wikipedia.org/b">http://en.wikipedia.org/b</a>
</div>

答案 2 :(得分:0)

改进版本

$([$("a"), $("span")]).each(function(){
  console.log($(this).length);
});

jsbin.com