JQuery - Как определить, существует ли родительский элемент?

Я пытаюсь динамически и ссылка на изображение, однако я не могу правильно определить, существует ли родительская ссылка.

Это то, что у меня есть,

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

Если элемент ссылается на мой элемент img и ссылка ссылается на используемый URL.

Каждый раз, когда выполняется код, выполняется условие else, независимо от того, завершен ли тег img в теге.

Может ли кто-нибудь увидеть, что я делаю неправильно?

Любые советы приветствуются.

Спасибо.

Ответ 1

Первая строка должна быть:

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

Ответ 2

Предполагая, что element на самом деле является объектом jQuery:

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

Если element - это DOM node:

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

Ответ 3

Ваш код анализируется как вызов element.parent с аргументом 'a'.length.
Поэтому он эквивалентен element.parent(1), что является недействительным вызовом.

Вам нужно получить длину объекта jQuery, перемещая .length после ), например:

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

Кроме того, это не будет работать, если element вложен в какой-либо другой тег, который сам находится в теге <a>.
Вместо этого вы можете вызвать closest.