2011-06-10 114 views
0

我想了解什么是一个jQuery中选择,所以我写了这个,按字母顺序排序的属性:jQuery函数返回什么?

var X = $('p:first'); 
console.log(X); 
$(X).each(function(index,Element) { 
    var prop; 
    var arr = []; 
    for (prop in Element) { 
     arr[arr.length] = prop; 
    } 
    arr = arr.sort(); 
    for (var i=0,ii=arr.length;i<ii;i++) { 
     console.log(arr[i]); 
    } 
}); 

这是您将属性名称进行排序,还是我工作太辛苦的方式吗?

+0

看起来好像没什么问题。如果你真的对每个属性的作用感兴趣,请检查jQuery src。它并不难,让jQuery更有意义。 – joekarl 2011-06-10 21:38:12

+0

看起来正确。为了便于阅读,我会使用'arr.push(prop)',但我想这是个人风格。另外,请注意,您也将获得任何继承的属性;如果你不想要,使用'if(Element.hasOwnProperty(prop))'。另一件事是风格问题,但更重要的是:不要使用以大写字母开头的变量,除非它们被称为构造函数。如果一个函数被'new'调用并且没有它,那么就有很大的区别,我们通常只有这条约定(构造函数以大写字母开头,常规函数没有)。 – Amadan 2011-06-10 21:39:19

+0

你得到的元素是对实际DOM节点的引用,所以它们的属性不是很神秘:-) – Pointy 2011-06-10 21:57:37

回答

2

您的代码正在获取为paragraph html element定义的所有属性,包括继承属性。

另外一个方式来获得和整理所有这些属性是使用内置keys方法上Object

Object.keys($('p')[0]).sort() 

或在普通的JavaScript相当于

Object.keys(document.getElementsByTagName('p')[0]).sort()