我有几个列表项,当我点击项目时我希望浏览器重定向到“.title> a”链接(href)。但我不想在“notThis”选择器上发生任何事件。
参见示例 http://jsfiddle.net/VTGwV/29/
<div class="item">
<div class="title">
<a href="www.jsfiddle.net">jsfiddle.net</a>
</div>
<div> djføljdsaføljdsf a</div>
<div> djføljdsaføljdsf a</div>
<div> djføljdsaføljdsf a</div>
<div class="notThis">
<a href="/test.html">link1 </a>
<a href="/test2.html">link2</a>
</div>
脚本
$(document).on('click', '.item', function(event) {
window.location.href = $(event.currentTarget).find('.title > a').attr('href');
});
我试过了:没有('。notThis')没有任何运气。
更改 感谢所有的答案,但我发现了另一个问题。如果我在整个项目上有一个事件处理程序,我无法点击“notThis”选择器中的链接,因为它只返回“false”。是不是有办法使用.not /:没有结合$(文件).on('click',-------)
答案 0 :(得分:18)
您可以测试点击事件是否来自.notThis
元素(或元素本身):
$(document).on('click', '.item', function(event) {
if($(event.target).closest('.notThis').length > 0) {
return false; // if you want to ignore the click completely
// return; // else
}
window.location.href = $(event.currentTarget).find('.title > a').attr('href');
});
我还认为您可以使用this
代替event.currentTarget
。
答案 1 :(得分:0)
您的语法错误,只需使用这样的选择器:
示例强>
$("div.item > div:not(.notThis)").click(function(){
window.location.href = $(this).find('.title > a').attr('href');
});
答案 2 :(得分:0)
var clickable = $('.item').find('div').not('.notThis');
$(clickable).on('click', function(event) {
alert($(this).parent().find('.title a').attr('href'));
});