2016-06-04 2 views
0

У меня есть функция в моем коде, что мне нужно изменить ссылки на моей странице, это выглядит примерно так:JQuery селектор для списка доменов

$('a').each(function(){ 
    // code here related to HREF attr 
}); 
$('form').each(function(){ 
    // Code relate to the TARGET attr 
}); 

Мне нужно применить эту функцию на все каналы и задачах форм, указывающих на некоторые конкретные области. Предположим, у меня есть список, подобный этому: www.example.com,www.domain.com,www.anotherdomain.com

Как изменить селектор таким образом, чтобы он мог применять его только к ссылкам и формированию пионов в доменах в списке?

+0

Вы можете использовать 'indexOf' –

+0

Измените код вместо селектора, это может сработать –

+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; 
}); 

Или просто, если заявление:

$('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 Kumar «s domainList подход:

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. 
}); 
+0

Я связываю последний. Попробуем. –

1

Если цели являются сайта гиперссылка Я предлагаю для добавления http: // или https: // и затем (в другом месте вам нужно удалить http: // от ATTR ("целевой") или HREF при сравнении).

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) 
}); 
+0

Не должно быть '== 0' istead из'> = -1'? –

+0

Спасибо. Не из них. Но это должно быть> -1. Исправлено! @Kenny Lajara –

+0

@andlrc Вы абсолютно правы. Но вопрос не был общим. –

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/

+0

_ "Это не сработает, так как $ (this) .attr ('href') скорее всего будет содержать подкаталоги." _? Не знаете, что вы имеете в виду? – guest271314

+0

Я думаю, что он имеет в виду, что ссылка не должна указывать на домен доменов. –

Смежные вопросы