0

当用户单击一个元素或其中的任何内容时,我需要触发一个事件,除非他单击一个<a>元素。

这就是我现在正在尝试的:

$( "div:not(a)" ).click(function(e) {
    alert("hello world");
});

您可以在这里更好地理解它:

http://jsfiddle.net/cMBP3/1/

我怎样才能做到这一点?

4

3 回答 3

2

你可以使用:

$("div").click(function (e) {
    if (e.target.nodeName.toLowerCase() != 'a') alert("hello world");
});

jsFiddle 示例

于 2013-08-26T20:35:57.727 回答
2

由于您div的从来都不是a,因此这是行不通的。

你必须检查你的目标元素是否有a这样的标签:

$('div').click(function(event) {
    var $target = $(event.target);
    if(!$target.is("a") ) {
      alert("hello world");
    }
});

我已经更新了你的小提琴:看看

于 2013-08-26T20:36:09.623 回答
1

这是未经测试的,但希望能给你这个想法:

$(function(){
    $('div').click(function(e){
         if($(e.target).is('a')){
              e.stopPropagation();
         }
    });
});
于 2013-08-26T20:39:11.280 回答