このコードは機能していません:
$("div").hasClass("testSection").attr("id");
次のエラー メッセージが表示されます。
TypeError: $(...).hasClass(...).attr は関数ではありません
何が問題なのですか?
このコードは機能していません:
$("div").hasClass("testSection").attr("id");
次のエラー メッセージが表示されます。
TypeError: $(...).hasClass(...).attr は関数ではありません
何が問題なのですか?
.hasClass("testSection")
ブール値を返します。チェーンする jQuery オブジェクトを返しません。
また、複数の要素を一致させる場合、次のような特定の関数を使用する.attr
と、最初に選択した要素から返されることも理解しています。
$("div").attr('id'); => $('div').eq(0).attr('id');
問題はhasClass()
、jQuery オブジェクトではなくブール値を返すためです。したがってattr()
、ブール値を呼び出すと、表示されているエラーが発生します。
指定されたクラスを持つ div が 1 つしかないと仮定すると、セレクターでクラスを使用できます。
var id = $("div.testSection").prop("id");
クラスに複数の div がある場合は、ループする必要があります。
$("div.testSection").each(function() {
var id = this.id;
// do something with the id...
});
hasClass はオブジェクトではなく true または false を返します。これを使用して、
$("div.testSection")
一連の要素のすべての ID を取得しようとしている場合は、for コンストラクトまたは jQuery の each 関数を使用してそれらを反復処理する必要があります。また、attr() よりも prop() を使用することをお勧めしますが、この場合はそれほど重要ではありません。
JSFiddle の例: http://jsfiddle.net/turiyag/QXyWV/1/
$.each($("div.foo"),function(index,value) {
log($(value).prop("id") + " ");
});