2010-07-21 64 views
1

這兩個,這是正確的?jQuery數組和jQuery對象有什麼技術區別?

jQuery('someclass').click(function() { 
    alert("I've been clicked!"); 
}); 

jQuery('someclass').each().click(function() { 
    alert("I've been clicked!"); 
}); 

我想知道如果我有jQuery的工作如何某些方面的根本性的誤解,或者如果它只是得到了很大的包容性內置到它的每一個功能允許無論是單個元素還是一組元素。

+0

筆記,看你點擊可以使用...功能(myevent){ 警報(myevent.target.nodeName)哪些因素; }); – 2010-07-21 19:33:01

+0

只有第一個是正確的。第二個根本不起作用。另外,如果你想通過類名選擇一個元素,你需要使用'.someclass'(以句點開始)而不是'someclass'。 – user113716 2010-07-21 19:46:38

+1

是的,沒有領先期限的'someclass'實際上是在尋找名爲''的html元素。 – jasongetsdown 2010-07-21 20:04:45

回答

4

第一個是正確的,第二個會失敗,因爲沒有定義回調函數。如果定義了回調函數,並且單擊事件處理程序應用於.each()中的回調中的每個迭代元素,則兩者在功能上將類似。然而,each調用真的是多餘的,因爲jQuery的指令/方法是一般適用於jQuery對象中的所有匹配元素(有一些方法,如.val()不這樣做,但它們是例外而不是標準)。這是通過內部應用.each() :)

jQuery對象是一個類似數組的屬性的對象;所有匹配元素被索引的對象的屬性即

<p>Hello</p><World</p> 

$('p'); // is an object { selector: 'p', O: [DOM Element], 1: [DOM Element], ... } 

其中[DOM Element]表示,所述選擇器相匹配的DOM到一個HTMLElement的引用。 類似數組的優點是它使對象的數組操作非常簡單。

1

jQuery對象是DOM元素數組的一個包裝。所以「jQuery數組」的一個jQuery對象。該對象包含頁面上與選擇器匹配的每個元素。你調用jQuery對象的大多數方法隱式循環遍歷數組中的所有元素並應用於所有元素。

,或者如果它只是得到了很大的包容 內置到它的每一個功能 允許一個單一的元素或 集合的元素。

這就是這種情況。真的,每種方法都可以在一個元素上工作,但是jQuery會多次調用它,因爲它需要處理對象。我相信它實際上在內部使用.each()來做到這一點,所以如果你瞭解.each()的工作原理,那麼你就會明白jQuery的隱式循環是如何工作的。

某些方法不適用於集合中的每個對象,但不適用於其文檔中的所有對象。例外情況是對每個元素都沒有意義的方法。例如,如果您致電$('.blah').innerHeight(),您將獲得由$('.blah.')返回的jQuery對象中第一個元素的高度。

也有方法可以獲取和設置屬性。獲取它們時,從第一個元素返回值,並在設置時應用於所有匹配的元素。例如,如果你調用$('.blah').css('font-size')你會得到從集合中的第一元素的大小,但如果你打電話$('.blah').css('width', 100)你設置的元素寬度樣式jQuery的收藏。

請注意,您實際上可以像處理數組一樣處理jQuery對象。只需使用數組符號來訪問一個元素。

$jQ_obj = $('.classy').find('.refined'); 
element = $jQ_obj[3]; 

這第四個元素存儲具有類refined並且是具有classy元素的子頁面上。 element中的結果對象是原始DOM對象。

二點,

由於所提到的這個答案被刪除,請確保您瞭解如何.each()作品。您需要將它應用於每個匹配元素的函數傳遞給它,就像事件處理程序一樣。因此,它應該是:

jQuery('.someclass').each(function(i) { //don't forget the dot! 
    $(this).click(function() { 
     alert("I've been clicked!"); 
    }); 
}); 

的回調中,以.each()this關鍵字是指當前DOM元素繞環通過,並傳遞給回調的arg循環索引。 this是一個原始DOM元素(想起它就像寫作$('.someclass')[i]),所以你必須從它創建一個jQuery對象來調用.click()

0
Var object={}; 
object.push{id:1,name:{("madan","jeevan","charan")},education:"Hyderabad"}; 

對象始終只返回一行,,

var Arrayobj=[]; 
Arrayobj.push({id:1,name:"madna"},{id:2,name:"jeevan"},{id:3,name:"charan"}); 

//Array can return more than one row 
相關問題