動的に画像へのリンクを作成しようとしていますが、親リンクがすでに存在するかどうかを正しく判断できません。
これは私が持っているものです、
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句が実行されます。
誰かが私が間違っていることを見ることができますか?
アドバイスをいただければ幸いです。
ありがとう。
最初の行は次のようになります。
if (element.parent('a').length > 0)
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);
コードは、引数_element.parent
_を使用した_'a'.length
_の呼び出しとして解析されます。
したがって、これはelement.parent(1)
と同等であり、これは無効な呼び出しです。
次のように、_.length
_の後に_)
_を移動して、jQueryオブジェクトの長さを取得する必要があります。
_if (element.parent('a').length > 0)
_
また、element
が_<a>
_タグ内にある他のタグにネストされている場合、これは機能しません。
代わりにclosest
を呼び出すことをお勧めします。