2017-11-11 527 views
0

我想枚舉jquerObj.attributes屬性來從一些標籤中獲取我自己的數據。 這對我幾乎無處不在: $('selector').eq(0); 它返回一個jquery對象(只有1),其中包含許多屬性,包括「屬性」,屬性「屬性」可以枚舉。 但是,當欲從這樣的「表」標籤加載數據:jquery對象沒有屬性屬性

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

它返回一個奇數對象像陣列,它包含屬性爲「0」,「長度」(= 1),「prevObject 」。 我在控制檯測試(obj是(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的數據表插件被加載。 我不知道下一步該怎麼做......謝謝!

+0

很明顯的情況是'obj' **作爲一個jQuery對象開始**。 '.eq()'方法不返回一個DOM元素。 jQuery對象沒有「屬性」屬性。 – Pointy

+0

[**'.eq' **](http://api.jquery.com/eq/)返回一個精簡的jQuery對象。所以它是一個沒有'attributes'屬性的jQuery對象。 –

+0

@ibrahimmahrir我試圖從標記按鈕和表讀取attrs。它適用於標籤按鈕。爲什麼表沒有屬性?謝謝! – brallow

回答

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() 
+0

我可以用eq(0)返回的對象調用一些像attr這樣的jquery方法。我認爲這意味着它是一個jQuery對象。爲什麼沒有像其他選擇器那樣的屬性屬性?同時,我可以使用attr來獲取指定的屬性。這意味着對象包含att信息。所以我很確定。再次感謝您的幫助 – brallow

+1

只是不要將jQuery對象與DOM對象混合在一起,一切都會起作用。當然,閱讀適當的方式 - 用特定的方法。不是直接與普通物體一樣。 – WaldemarIce

+0

我已經明白了。 包含'length','0'屬性的對象是普通的jquery對象。 jquery對象沒有「attributes」屬性。 – brallow

0

感謝每一個人。 我已經明白了。錯誤的是,我認爲$('選擇器')返回一個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){}); 

再次感謝!