0

我正在通过 DOM 从链接元素循环到具有类.ui-mobile-viewport的最近元素。这可以是DIVBODY元素。

我需要检查它是哪个元素并且无处可去......这就是我正在尝试的:

var targetViewport;

// 循环将 targetViewport 设置为 $('div.ui-mobile-viewport') 或 $('body.ui-mobile-viewport')

if ( targetViewport === $('body') ) {
   console.log("found a body");
   }

感谢帮助!

4

5 回答 5

5

.closest()您可以尝试使用jQuery的方法,而不是自己进行遍历。所以我认为你可以这样做:

var x = $('thing-that-was-clicked').closest('.ui-mobile-viewport');
alert(x.is('body'));
alert(x.is('div'));

现在您将该.ui-mobile-viewport元素作为一个 jQuery 对象,您可以在其上运行任何您想要的测试,例如检查bodydiv如上面的代码所示。

于 2012-04-25T13:42:05.553 回答
2

您无法比较 jQuery 集合...您必须实际比较它们的节点,因此假设 targetViewport 还包含您可以执行的 jQuery 集合

if ( targetViewport[0] === document.body ) {
  console.log("found a body");
}

应该管用...

编辑:如果你喜欢 jQuery 方式(带有额外的函数调用)

if (targetViewport.is('body')) {
  console.log("found a body");
}
于 2012-04-25T13:37:28.083 回答
2

您可以简单地访问元素的 nodeName。

if (targetViewport[0].nodeName.toUpperCase() === 'BODY') {

}

这样就不需要为你的检查做任何 CSS 查询,调用 jQuery 并且它不依赖于任何库。

于 2012-04-25T13:44:43.550 回答
1
if(targetViewport[0] === document.body)
if(targetViewport[0].nodeName === 'BODY')
于 2012-04-25T13:41:52.463 回答
0

您正在寻找.is()方法,它检查元素是否与选择器匹配。

if (targetViewport.is('body'))
于 2012-04-25T13:37:20.487 回答