Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(document.documentElement)特定于目标的元素_Javascript_Jquery - Fatal编程技术网

Javascript $(document.documentElement)特定于目标的元素

Javascript $(document.documentElement)特定于目标的元素,javascript,jquery,Javascript,Jquery,我有这样一个函数: jQuery(document.documentElement).on('click touch', function(e) { // check if $(e.target) matches with $('ul#menu-navigation > li.menu-item') // or any child elements within this particular div. }); if ( $(e.target).is('ul#menu-n

我有这样一个函数:

jQuery(document.documentElement).on('click touch', function(e) {
    // check if $(e.target) matches with $('ul#menu-navigation > li.menu-item')
    // or any child elements within this particular div.
});
if ( $(e.target).is('ul#menu-navigation *') ) {
    // user clicked on this div or any child divs within this element
} else {
    // user clicked anywhere outside of this div
}
如何生成if语句,检查
e.target
是否与
$('ul#菜单导航>li.menu item')
或该特定div中的任何子元素匹配

例如,类似于:

if ( $(e.target) == $('ul#menu-navigation > li.menu-item') ) {
    // user clicked on this div or any child divs within this element
} else {
    // user clicked anywhere outside of this div
}
这样使用:

jQuery(document.documentElement).on('click touch', function(e) {
    // check if $(e.target) matches with $('ul#menu-navigation > li.menu-item')
    // or any child elements within this particular div.
});
if ( $(e.target).is('ul#menu-navigation *') ) {
    // user clicked on this div or any child divs within this element
} else {
    // user clicked anywhere outside of this div
}
如果您只想包含
ul#menu-navigation>li.菜单项
li.菜单项的子菜单项
请使用此选择器:
'ul#menu-navigation>li.菜单项,ul#menu-navigation>li.菜单项*'
尝试使用
if($(e.target).is('ul#menu-navigation>li.菜单项')

这将询问元素是否匹配

jQuery(document.documentElement).on('click touch',函数(e){
if($(e.target).is('ul#菜单导航>li.menu项')){
//用户单击了此div或此元素中的任何子div
警报(“我点击了李”)
}否则{
//用户单击了此div之外的任何位置
}
});

    主页
  • 关于

我无法真正理解此功能的好处。 我可以想象,当您不将事件绑定到
document.documentElement
时,您可以使用
e.currentTarget
而不是
e.target
来解决问题。将它绑定到您的目标,在这种情况下,我认为它应该是
$('ul#menu navigation>li.menu item')

使用此解决方案,您知道它是您想要的元素,并且您减少了开销,因为您不必倾听文档中的每个klick。

用于从目标开始查找

jQuery(document).on('click touch', function(e) {
    if($(e.target).closest('ul#menu-navigation > li.menu-item').length){
      // is within a menu item
    }   
});

为什么不将单击事件附加到该元素上?是否正在查找方法?是否正在查找事件委派
jQuery(document.documentElement)。在('click touch'、'#menu navigation>.menu item',函数(e){…})
?这个特定div中的子元素是什么意思?我在那里没有看到div元素!仅供参考:
jQuery(document.documentElement)
可以替换为:
$(document)
。但是如果用户单击子元素,例如:
ul#菜单导航>li.menu-item>。随机子元素
?@henrikpeterson,则不使用直接子元素表示法,则此if语句是否有效。查看更新!现在它适用于子体中的任何元素@charlietfl你在说哪一个?这个
'ul#menu-navigation*”
或者这个
'ul#menu-navigation>li.menu-item,ul#menu-navigation>li.menu-item*”
?但是如果用户单击子元素,例如:
ul#menu-navigation>li.menu-item>,这个if语句会起作用吗?这真是一个聪明的解决方案!这很可爱。非常感谢。虽然它不应该是
.length()