web-dev-qa-db-ja.com

jQuery-親要素が存在するかどうかを判断する方法は?

動的に画像へのリンクを作成しようとしていますが、親リンクがすでに存在するかどうかを正しく判断できません。

これは私が持っているものです、

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を指します。

コードが実行されるたびに、imgタグがタグでラップされているかどうかに関係なく、else句が実行されます。

誰かが私が間違っていることを見ることができますか?

アドバイスをいただければ幸いです。

ありがとう。

13
Dan

最初の行は次のようになります。

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

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);
6
cletus

コードは、引数_element.parent_を使用した_'a'.length_の呼び出しとして解析されます。
したがって、これはelement.parent(1)と同等であり、これは無効な呼び出しです。

次のように、_.length_の後に_)_を移動して、jQueryオブジェクトの長さを取得する必要があります。

_if (element.parent('a').length > 0)
_

また、elementが_<a>_タグ内にある他のタグにネストされている場合、これは機能しません。
代わりにclosestを呼び出すことをお勧めします。

1
SLaks