使おうとしています
$(this).parentNode.attr('data-element')
文字列で0〜5を返す必要がありますが、機能しません。このような機能で使っています
$('.someClass').each(function(){
$(this).html(SomeFunction('SomeString', $(this).parentNode.attr('data-element')));
});
クラス 'someClass'のすべての要素にはparentNodeがあります
<li class="element" data-element: 1 (or any number from 0 to 5 (including))> </li>
そして、どこに間違いがあるのか私にはわかりません。私は何が間違っているのですか?
-デービッド
同じコード行にjQueryとプレーンJavaScriptを混在させているため、機能しません。次のいずれかを使用できます。
_$(this).parent().attr('data-element'); // jQuery
_
または
_this.parentNode.getAttribute("data-element"); // plain javascript
_
parentNode
はjQueryオブジェクトのプロパティではないため、2つを以前のように混在させることはできません。親を取得するためのjQueryメソッドは.parent()
です。
やったほうがいい
_ $(this).parent().attr('data-element')
_
jQuery以外のオブジェクトでattr()
を呼び出すことはできないため
代わりにこれを試してください:
$(this).parent().attr('data-element');
.parent()などの関数の詳細については、JQueryドキュメントの「トラバース」セクションを参照してください。 http://api.jquery.com/category/traversing/
Jqueryを使用すると、次のようになります。
$(this).parent().attr('data-element');
Jqueryを使用しない場合、これは次のようになります。
this.parentNode.getAttribute("data-element")
私は使いたい:
var item = $(this);
var parent = item.closest(".element"); //using the class for selection
//and then use parent.attr('data-element')