域列表的JQuery选择器

时间:2016-06-04 00:16:07

标签: javascript jquery

我的代码中有一个函数,我需要修改页面中的链接,它看起来像这样:

ListView_SetIconSpacing(ListView1.Handle, 348, 480);

我需要在指向某些特定域的表单的所有链接和目标上应用此函数。我们说我有一个像这样的列表:$('a').each(function(){ // code here related to HREF attr }); $('form').each(function(){ // Code relate to the TARGET attr });

如何修改选择器的方式只能将其应用于链接并将pionting形成列表中的域?

3 个答案:

答案 0 :(得分:1)

您可以使用.filter

var $exampleComLinks = $('a').filter(function() {
  return this.href.indexOf('https://example.com') == 0
      || this.href.indexOf('https://example2.com') == 0
      || this.href.indexOf('https://example3.com') == 0;
});

或简单的if语句:

$('a').each(function() {
  if (this.href.indexOf('https://example.com') == 0
      || this.href.indexOf('https://example2.com') == 0
      || this.href.indexOf('https://example3.com') == 0) {
    console.log('do something this $(this)');
  }
});

使用@Praveen KumardomainList方法:

var domainsList = ["www.example.com", "www.domain.com", "www.anotherdomain.com"];
$('a').each(function () {
    if (domainsList.indexOf($(this).attr("href").replace(/https?:\/\/([^\/]*).*/gi, "$1")) > -1)
        // Do it.
});
$('form').each(function () {
    // Code relate to the TARGET attr
    if (domainsList.indexOf($(this).attr("href").replace(/https?:\/\/([^\/]*).*/gi, "$1")) > -1)
        // Do it.
});

答案 1 :(得分:1)

如果目标是网站网址,我建议添加http://或https://然后(其他地方你必须在比较时从attr(“target”)或href删除http://。):

var domains="http://www.example.com,http://www.domain.com,http://www.anotherdomain.com";
$('a').each(function(){
    if (domains.indexOf($(this).attr("href")) > -1)
});
$('form').each(function(){
    if (domains.indexOf($(this).attr("target")) > -1)
});

答案 2 :(得分:1)

您可以使用new RegExp()与参与数组列表一起使用分隔符"|"RegExp.prototype.test()

var list = ["www.example.com","www.domain.com","www.anotherdomain.com"];

$("a, form").each(function(i, el) {
  if (new RegExp(list.join("|")).test(this.href || this.target)) {
    // do stuff
  }
})

jsfiddle https://jsfiddle.net/xkjpxd6L/