-1

我有几组链接,例如:

<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 wrap() 是不可能的,我不想做任何额外的功能

4

3 回答 3

2

您可以改用以下内容:

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

有关示例,请参见此 jsFiddle

于 2013-07-30T22:57:19.727 回答
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>
于 2013-07-30T23:00:36.007 回答
0

改良版

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

jsbin.com

于 2013-09-09T06:01:07.690 回答