在文档单击事件中,如果目标是按钮元素,如何返回
$(document).click(function(e){
if(e.target.nodeName.toLowerCase() != 'button')
上面的代码是否正确?
你只能做
$(document).click(function(e) {
if ( $( e.currentTarget ).is( ":button" ) ) {
// Do things
}
});
你为什么要使用:button
而不是button
?
因为这样你就可以检测它是否是一个<input type="button">
或一个<button>
标签,以及呈现为按钮的其他输入类型。
如果您不确定是否使用此选择器,请查看:button 选择器jQuery 文档。
快点 :
$(this).is('button');
您可以使用 .is() 来针对 selecor 测试给定的元素。
您也可以使用:button选择器进行测试,如果您只想要元素按钮,那么您可以使用is('button')
元素选择器
$(document).click(function(e) {
if ($( e.target ).is(":button")) {
//check
}
});
$(document).click(function(e){
if($(this).is('button')){
//your codes..
}
});
纯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
jquery 完美地处理了这个:$(this).is(nameOfTargetElement);