/ / jqueryオブジェクトはattributesプロパティを持たない - javascript、jquery、attributes

jqueryオブジェクトには属性のプロパティがありません - javascript、jquery、attributes

いくつかのタグから自分のデータを取得するためにjquerObj.attributesプロパティを列挙したいです。 そしてこれはほとんどどこでも私のために働く: $("selector").eq(0); "attributes"を含む多くのプロパティを含むjqueryオブジェクト(1のみ)を返します。プロパティ "attributes"を列挙することができます。 しかし、私がこのような「テーブル」タグからデータをロードしたいときは:

$("#tableId").eq(0);

それは配列のような奇妙なオブジェクトを返し、それはプロパティ "0"、 "長さ"(= 1)、 "prevObject"を含みます。 コンソールでテストしました(objはeq(0)の戻り値です)。

  obj[0];   // it looks like a DOM object
$(obj[0]);  //get obj again.
obj.attributes===undefined;
obj.id===undefined;
obj.attr("id")==="#tableMain";  //THIS IS SO ODD. It looks like it is a jquery object!

ところで、jqueryのdatatableプラグインがロードされます。 次はどうしたらいいかわからない…ありがとう!

回答:

回答№1は0

それは全く普通のことです。プレーンなHTML要素に対してjQueryメソッドを呼び出すことはできません。

$("any-selector").eq(0).each(function () {
console.log(this)
console.log($(this))
})

jQueryは各要素に魔法を追加するので、それをラップします。だからあなたはこれを行うことができます:

$("selector").getAttribute("id") // calling js method on jQuery object

しかしその逆ではない:

var elm = document.getElementById("id")
elm.text() // calling jQuery method on plain dom object
// but you can wrap it with jQuery and then call jQuery method
$(elm).text()

回答№2の場合は0

みんなありがとう。 間違いないのは、$( "selector")がjqueryオブジェクトの配列を返すことだと思うのは間違っています。 私は他の人のために属性を取得するためにこれを使いました、そしてそれは成功します。

   var objs = $("selector");
$.each(objs,function(idx,obj){
//obj here is a plain html object
$.each(obj.attributes,function(a,b){});
}

そしてこれを使ってテーブルタグを取得しましたが失敗しました。

var obj = $("selector").eq(0);    //returns jquery object.
$.each(obj.attributes,function(a,b){});

再度、感謝します!