Eu quero enumerar a propriedade jquerObj.attributes para obter meus próprios dados de algumas tags. e isso funciona para mim em quase todos os lugares:
$("selector").eq(0);
Ele retorna um objeto jquery (apenas 1) que contém muitas propriedades, incluindo "atributos", e a propriedade "atributos" pode ser enumerada. Mas quando eu quero carregar dados de uma tag "table" como esta:
$("#tableId").eq(0);
Ele retorna um objeto ímpar, como uma matriz, contém a propriedade "0", "length" (= 1), "prevObject". Eu testei no console (obj é o valor de retorno de 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!
btw, o plug-in de tabela de dados jquery é carregado. Eu não sei como fazer a seguir ... Obrigado!
Respostas:
0 para resposta № 1É perfeitamente normal. Você não pode chamar métodos jQuery em elementos html simples. Considere o seguinte:
$("any-selector").eq(0).each(function () {
console.log(this)
console.log($(this))
})
Você receberá dois outros objetos, pois o jQuery adiciona um pouco de magia a cada elemento, os envolve. Então você pode fazer isso:
$("selector").getAttribute("id") // calling js method on jQuery object
Mas não vice-versa:
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 para resposta № 2
Obrigado por todos. Eu entendi agora. O erro é que acho que $ ("selector") retorna uma matriz de objetos jquery, o que está errado. Eu usei isso para obter atributos para os outros e ter sucesso.
var objs = $("selector");
$.each(objs,function(idx,obj){
//obj here is a plain html object
$.each(obj.attributes,function(a,b){});
}
E usei isso para obter a tag da tabela e ela falhou.
var obj = $("selector").eq(0); //returns jquery object.
$.each(obj.attributes,function(a,b){});
Obrigado novamente!