2015-09-11 4 views
-3

В настоящее время я просматриваю ссылки на странице и проверяет, содержит ли ссылка строку для определения URL-адреса. Heres мой текущий код:Проверьте, соответствует ли значение href

$(".domain a").each(function() { 

       if ($(this).is(':contains("imgur")')) { 

Это может обнаружить, если элемент содержит строку «Imgur», но из-за это ссылка идет на сайт как slimgur.com, он также возвращает истину.

Как правильно проверить, что адрес, в этом примере, imgur.com или любого из его поддоменов (i.imgur.com & m.imgur.com) и URL-адрес, такой как slimgur.com не возвратит верно?

+0

Что-то вроде «новой строки ("imgur.com") valueOf() == новой строки (" а ") .valueOf() 'или, может быть, === imgur.com – Turtle

+0

положил' // 'перед ним ?? – charlietfl

+1

'is (': contains (": //imgur.com ")')'? –

ответ

1

Это будет делать это:.

$(".domain a").each(function() { 
    var str = 'imgur'; 
    if($(this)[0].hostname.split('.').indexOf(str) > -1) { 
     console.log('Found ' + str); 
    }  
}) 
+0

Что делает '$ (this) [0]' do? Просто использование 'this.hostname', похоже, тоже работает. – Orbit

+0

Внутри цикла (каждый) $ (это) является объектом jQuery. Но имя хоста работает с объектом javascript. Я просто создал объект Javascript из объекта jQuery, используя $ (this) [0]. Итак, здесь $ (this) [0] = this –

+0

А, ок. Принимая это как ответ, поскольку он программно включает в себя все поддомены и, по-видимому, является самым чистым решением для моей ситуации. Благодаря! – Orbit

1

Вы могли бы сделать что-то вроде: JS Fiddle

$('a').each(function() { 
    var url = "yahoo.com"; 
    var anchor = $(this).attr('href'); 
    var domain = url_domain(anchor); 

    if (url === domain) { 
     //Do something here 
    } 
}); 

function url_domain(data) { 
    var a  = document.createElement('a'); 
     a.href = data; 
    return a.hostname; 
} 

url_domain() функции найти здесь: Extract hostname name from string

+0

должен знать точный url, чтобы быть в состоянии соответствовать, OP кажется только заинтересованным в домене. Пример кажется слишком тривиализованным. – charlietfl

+0

Да, похоже, что это будет соответствовать только определенному URL-адресу. Например, с imgur, URL-адреса изображений имеют случайную строку, прикрепленную к URL-адресу, поэтому жестко закодированная переменная не работает. – Orbit

2

Вместо проверки текста, используйте свойство, связанное с <a> тэга как hostname.

$(".domain a").filter(function(){ 
    return this.hostname === 'imgur.com'; 
}).doSomething(); 

DEMO

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