我正在捕捉“a”元素中的所有点击:
$("a").click(function(e){....});
我想知道是否可以根据某些变量丢弃某些事件。
例如......
If href="http://www.google.es" then alert("google.es")
else if href="http://www.google.com" then do not handle the event and let the browser do whatever it has to do.
我不知道我是否已经解释得很好......
答案 0 :(得分:3)
或者,你可以这样做:
$("a[href!='http://www.google.com']").click(function(e) {
e.preventDefault();
if(this.getAttribute('href') === 'http://www.google.es') alert("google.es");
});
并且首先不会为google.com
生成点击事件。
答案 1 :(得分:0)
$("a").click(function(e){
e.preventDefault();
if (this.href == "http://www.google.es/") alert("google.es");
else if (this.href == "http://www.google.com/") window.location = this.href;
});
答案 2 :(得分:0)
在你的函数内部$(this).attr('href')应该给你锚标记的href - 你可以在其余的逻辑中使用它
答案 3 :(得分:0)
对于上面的例子,
$('a[href*=.es]').click(function(e){
e.preventDefault();
});
会使href属性中包含.es的所有链接都不被跟踪,但只留下其他链接。
答案 4 :(得分:0)
$("a").click(function(e) {
if ($(this).attr('href') == 'http://www.google.es') {
alert('google.es');
e.preventDefault();
}
// if code gets here, it's ok for the browser to handle normally.
}
答案 5 :(得分:0)
到目前为止发布的所有建议都有效,但它们并不是最灵活的。如果你想匹配任何以google.es
作为主机名的链接,我会做这样的事情:
$(document.body).delegate('a', 'click', function(e) {
var hostname = this.hostname || $(this).prop('href').split('/')[1];
if (hostname == 'www.google.es') {
alert('google.es');
e.preventDefault();
}
});