循环遍历 DOM 时,如何检查我是否到达了正文元素
when looping through the DOM how do I check if I reached the body element?
我正在通过 DOM 从链接元素循环到具有类 .ui-mobile-viewport 的最接近的元素。这可以是 DIV 或 BODY 元素。
我需要检查它是哪个元素,但一无所获......这就是我正在尝试的:
var targetViewport;
循环将目标视口设置为 $('div.ui-mobile-viewport') 或 $('body.ui-mobile-viewport')
if ( targetViewport === $('body') ) {
console.log("found a body");
}
感谢您的帮助!
与其自己进行遍历,不如尝试使用 jQuery 的 .closest()
方法。所以我认为你可以这样做:
var x = $('thing-that-was-clicked').closest('.ui-mobile-viewport');
alert(x.is('body'));
alert(x.is('div'));
现在你有了.ui-mobile-viewport
元素作为jQuery对象,你可以对它运行任何你想要的测试,比如检查body
或div
,如上面的代码所示。
你不能比较 jQuery 集合...你必须实际比较它们的节点,所以假设targetViewport也包含一个jQuery集合,你可以这样做。
if ( targetViewport[0] === document.body ) {
console.log("found a body");
}
应该工作...
编辑:如果你喜欢jQuery的方式(带有额外的函数调用)
if (targetViewport.is('body')) {
console.log("found a body");
}
您可以简单地访问元素的 nodeName。
if (targetViewport[0].nodeName.toUpperCase() === 'BODY') {
}
这样就不需要对你的检查做任何CSS查询,调用jQuery,它不依赖于任何库。
if(targetViewport[0] === document.body)
if(targetViewport[0].nodeName === 'BODY')
您正在寻找 .is()
方法,该方法检查元素是否与选择器匹配。
if (targetViewport.is('body'))
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- javascript数组元素是否知道其封闭数组
- 是否同步加载了LINK元素
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 如何检查元素是否在iframe中
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 浏览器是否持久缓存脚本元素的编译版本
- 检查元素是否将状态从隐藏更改为可见
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- 是否可以在第n个元素处重复启动ng
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 是否可以在尚未附加到DOM的元素中创建一个sparkline(使用jquery.sparkline插件)
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 确定元素是否存在