Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-如何确定父元素是否存在?_Jquery_Parent - Fatal编程技术网

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

jQuery-如何确定父元素是否存在?,jquery,parent,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);

我正在尝试动态创建一个指向图像的链接,但是我无法正确确定父链接是否已经存在

这就是我所拥有的

if (element.parent('a'.length) > 0)
{   
      element.parent('a').attr('href', link);            
}
else
{   
      element.wrap('<a></a>');
      element.parent('a').attr('href', link);     
}
if(element.parent('a'.length)>0)
{   
element.parent('a').attr('href',link);
}
其他的
{   
元素。包裹(“”);
element.parent('a').attr('href',link);
}
其中元素是指我的img元素,link是指要使用的url

每次代码运行时,都会执行else子句,而不管img标记是否包装在a标记中

有人能看出我做错了什么吗

谢谢你的建议


谢谢。

您的代码被解析为对
元素的调用。parent
带有参数
'a'。length

因此,它相当于
元素.parent(1)
,这是一个无效的调用

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

if (element.parent('a').length > 0)
此外,如果
元素
嵌套在另一个标记中,而该标记本身就位于
标记中,则这将不起作用。

您可能需要调用最近的。

第一行应该是:

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

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

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

@克莱特斯统治着竞技场+1
if(element.parent('a').length)
如果没有
>0
就足够了,因为任何大于0的数字都将默认为true。是的,但是使用
>0
会使代码更具可读性和更明显的功能,并且可读性先于简洁。“没有什么比最明显的事情更容易让你逃避”。我有一个场景涉及到
最近的
,所以我只是简单地使用
$el.closest(“.selector”).length>0
作为一个条件。该死的我们这些人有时如此健忘
if (!$(element).parent().is("a")) {
  $(element).wrap("<a>")
}  
$(element).parent().attr("href", link);