jQuery - 如何确定父元素是否存在?

时间:2010-04-22 14:52:36

标签: jquery parent

我正在尝试动态和链接到图像,但我无法正确确定父链接是否已存在。

这就是我所拥有的,

if (element.parent('a'.length) > 0)
{   
      element.parent('a').attr('href', link);            
}
else
{   
      element.wrap('<a></a>');
      element.parent('a').attr('href', link);     
}

其中element指的是我的img元素,link指的是要使用的url。

每次代码运行时,都会执行else子句,无论img标记是否包含在标记中。

谁能看到我做错了什么?

任何建议表示赞赏。

感谢。

3 个答案:

答案 0 :(得分:33)

第一行应该是:

if (element.parent('a').length > 0)

答案 1 :(得分:5)

假设element实际上是一个jQuery对象:

if (!element.parent().is("a")) {
  element.wrap("<a>")
}  
element.parent().attr("href", link);

如果element是DOM节点:

if (!$(element).parent().is("a")) {
  $(element).wrap("<a>")
}  
$(element).parent().attr("href", link);

答案 2 :(得分:0)

您的代码被解析为对element.parent的调用,其参数为'a'.length 因此,它等同于element.parent(1),这是无效的呼叫。

您需要在.length之后移动)来获取jQuery对象的长度,如下所示:

if (element.parent('a').length > 0)

此外,如果element嵌套在<a>标记中的其他标记中,则无法使用此功能。
您可能希望改为呼叫closest