我正在尝试采取一个链接,无论是点击或悬停在能够抓取属性href,并告诉它是否是一个超级链接。此外,我希望它能够告诉我,如果这是一个超级链接到我自己的网站。再加上其他各种过滤器。
这样做的主要目的是,当一个内部链接被点击时,它会告诉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;
}
});
});
感谢您的帮助
发布于 2010-04-21 15:07:04
$('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);
}
}
我想这是一个更好的方法。应该可以工作,但未经测试。正则表达式可以/也应该进行微调。
发布于 2010-04-21 15:31:56
您还可以使用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,等等)。
https://stackoverflow.com/questions/2680878
复制相似问题