2010-04-21 3 views
0

Im пытается взять ссылку либо при нажатии, либо наведите указатель мыши на возможность захватить атрибут href и указать, есть ли его гиперссылка или нет. Также я хочу, чтобы он мог сказать мне, если это гиперссылка на мой собственный сайт. Плюс различные другие фильтры.найти ссылки, которые являются гиперссылками в jQuery

Основной целью этого является то, что при щелчке по внутренней ссылке ajax будет захватывать контент, а многие из моих ссылок генерируются (через wordpress), поэтому я не могу их изменить слишком сильно. Другой целью этого является то, что я также могу открыть все внешние ссылки в новом окне.

У меня есть решение, которое работает на простой тестовой странице, но когда я помещаюсь на рабочую страницу, это ломается. Я знаю, что я, наверное, усложняю то, что должно быть.

Вот мой код

$(function(){ 
    $('a').live('click', function(){ 
     var x = $(this).attr('href'); 

     $(this).parent('div').append('<div id="test">' + x +'</div>'); 
     $('#test:contains("http")').css('color', 'red'); 
     $('#test:contains("sitename")').css('color', 'black'); 
     $('#test:contains("admin")').css('color', 'red'); 
     if($('#test').css('color') == 'red'){ 

     alert('external link'); 
     $('#test').remove(); 
     return true; 

     }else{ 

     alert('external link'); 
     $('#test').remove(); 
     return false; 

     } 
    }); 
}); 

спасибо вам помочь

ответ

1
$('a').live('click', function(){ 
    var href = $(this).attr('href'); 

    if(/http:\/\//.test(href) || /admin/.test(href)){ 
     //alert('external link'); 
     $(this).attr('target', '_blank'); 
     return(true); 
    } 

    if(/sitename/.test(href)){ 
     //alert('internal link'); 
     $.ajax({}); 
     return(false); 
    }  
} 

, что это лучший подход, я думаю. Должен работать, но непроверен. Регулярное выражение может/и должно быть точно настроено.

+0

намного лучший подход. спасибо работает как шарм. –

1

Вы также можете использовать синтаксис JQuery селектор (http://api.jquery.com/attribute-starts-with-selector/):

$('a[href^=http://], a[href^=/admin/]').live('click', function(){}); 
$('a[href^=/sitename/]').live('click', function(){}); 

Если проверка на API селектора вы найдете еще несколько селекторов (например, заканчивается X, содержит X, и т.д.).

+0

это полезная информация –

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