2011-06-10 99 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()