jquery - 如何检查父元素是否为tbody和thead?

时间:2012-01-04 20:57:47

标签: javascript jquery parent

我需要检查父母是否是tbody或thead标记。

我现在有这个,这不起作用:

item.parent("thead")[0] = "<thead>" ? console.log("yes") : console.log("no");

虽然不起作用。

任何提示我做错了什么?

谢谢!

5 个答案:

答案 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。