12

在文档单击事件中,如果目标是按钮元素,如何返回

$(document).click(function(e){
    if(e.target.nodeName.toLowerCase() != 'button')

上面的代码是否正确?

4

6 回答 6

27

你只能做

$(document).click(function(e) {
  if ( $( e.currentTarget ).is( ":button" ) ) {
    // Do things
  }
});

你为什么要使用:button而不是button

因为这样你就可以检测它是否是一个<input type="button">或一个<button>标签,以及呈现为按钮的其他输入类型。
如果您不确定是否使用此选择器,请查看:button 选择器jQuery 文档。

于 2013-07-01T10:47:43.630 回答
6

快点 :

$(this).is('button');
于 2013-07-01T10:48:00.483 回答
4

您可以使用 .is() 来针对 selecor 测试给定的元素。

您也可以使用:button选择器进行测试,如果您只想要元素按钮,那么您可以使用is('button')元素选择器

$(document).click(function(e) {
  if ($( e.target ).is(":button")) {
    //check
  }
});
于 2013-07-01T10:50:37.240 回答
2
$(document).click(function(e){
    if($(this).is('button')){
           //your codes..
    }

});
于 2013-07-01T10:47:56.887 回答
1

纯JS FTW!

e.target.nodeName === 'BUTTON'

或者如果你有dom 元素数组

if(['BUTTON', 'INPUT'].indexOf(e.target.nodeName) !== -1){
  // clicked on button/input
}

这不是错误。HTML 的大写字母。

在 XHTML(或任何其他 XML 格式)中,text_field 的值将显示为“div”。但是,在 HTML 中,text_field 的值将显示为“DIV”,因为 nodeName 和 tagName 在标记为 HTML 文档的 DOM 中的 HTML 元素上以大写返回。

https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeName

于 2016-11-25T10:25:00.493 回答
0

jquery 完美地处理了这个:$(this).is(nameOfTargetElement);

于 2020-12-17T12:43:39.197 回答