Jquery - 如何通过事件目标检查点击的元素?

4

是否有可能使用事件目标来检查点击的元素?

e.on('click', function(){
    if(!$(e.target) == 'input'){
        //do something
    }
});

我尝试了以下结构,但似乎没有起作用,与下面的相同:
e.on('click', function(){
    if(!$(e.target).is('input')){
        //do something
    }
});

我不确定事件目标是否能够检查类似这样的内容。


1
请检查这个可工作的fiddle:http://jsfiddle.net/Sh6u8/1/ - Superdrac
1
第二个例子应该可以工作,只是你没有将事件参数传递给函数。应该是 function(e) { ... - Juan Carlos Farah
4个回答

6
你需要指定你点击的元素在哪里。假设我们有以下html代码:

html

<div></div>

jQuery

$("body").on("click", function(e) {
     if($(e.target).is("input")) {
           console.log(e.target);
     }
});

fiddle

纯JS实现

document.onclick = function(evt) {
    var evt=window.event || evt; // window.event for IE
    if (!evt.target) evt.target=evt.srcElement; // extend target property for IE
    alert(evt.target); // target is clicked
}

fiddle


2
你应该像这样传递event,要检查点击的元素是否有输入,请在jquery中使用is选择器。
$("selector").on('click', function(e){
    if(!$(e.target).is('input')){
    //do something
}
});

is() 方法在 jQuery 中用作选择器


2

2
使用document作为选择器,并将事件e作为参数添加到函数中:
$(document).on('click', function(e){
    if(!$(e.target).is('input')){
       alert('yes');
    }
});

Demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接