2017-11-11 346 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){}); 

再次感谢!