我需要检查父母是否是tbody或thead标记。
我现在有这个,这不起作用:
item.parent("thead")[0] = "<thead>" ? console.log("yes") : console.log("no");
虽然不起作用。
任何提示我做错了什么?
谢谢!
答案 0 :(得分:6)
认为这样可行:
console.log(item.parent("thead").is("thead") ? "Yes" : "No");
http://jsfiddle.net/G9LJT/0/ - 否
http://jsfiddle.net/G9LJT/1/ - 是
...
item.parent("thead")[0]
指的是选择器的第一个DOM元素。
答案 1 :(得分:4)
您可以按如下方式使用.is
:
var isthead = item.parent().is("thead") ? "yes" : "no";
请注意,如果集合中的任何元素匹配,则.is
会返回true
,因此您需要.first
仅对第一个元素进行测试。
答案 2 :(得分:1)
您可以选择一个anscestor thead
标记并检查它的length
属性以查看它是否存在:
item.parents("thead:first").length > 0 ? console.log("yes") : console.log("no");
以下是演示:http://jsfiddle.net/upxyB/
请注意,我使用:first
伪选择器仅获取第一个匹配项,因为parents()
能够返回一组结果(例如,如果您有嵌套表)。
在旁注上,item.parent("thead")[0] = "<thead>"
将始终返回true,您需要比较运算符的双等号:item.parent("thead")[0] == "<thead>"
比较运算符的文档 - https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators
答案 3 :(得分:1)
您正在将DOM元素与字符串进行比较。您只需要通过选择并检查长度来检查父项是否符合您的要求:
item.parent('thead').length ? console.log('YES') : console.log('NO');
答案 4 :(得分:1)
尝试:
var item = $("#something");
if (item.parent().get(0).tagName.toLowerCase() === 'thead')
alert('parent is thead');
else
alert('parent is not thead');
它应该适用于ie6 +,ff,chrome / safari。