2011-07-07 57 views
74

是什麼這之間的區別:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something()); 

這:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something }); 

的HTML正被這樣的選擇並採取行動看起來表格單元格:

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td> 

我已經走了jQuery的文檔了,但我還是不瞭解差異。 (是我還是是文檔有時略帶「含糊不清」的內容清晰?)

新增信息:

顯然,我嘗試一個通用的例子是混亂的人!與第一個示例中的(以前)缺失的括號一起。 :(

第一個例子來自於我的代碼行刪除<TBODY>對於被選中一個複選框任何行:

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove()); 

第二個例子來自一個情況我通過看該#classesTable任何選中的複選框,並在下拉除去其匹配的項目。

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){ 
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove(); 
}); 

據我所知,他們做兩個不同的東西,而不是說我可以說:「我需要用點$ .each()在th在另一種情況下是case和.each(function(){})。

它們可以互換嗎?只有在某些情況下?決不?

+0

您的第一個代碼示例缺少右括號。 – tjollans

+0

評論和逗號,請參閱我的答案爲例。 – StuperUser

+0

第一個例子的意圖可以用幾種不同的方式來解釋。請糾正它,以反映你實際在做什麼。 – user113716

回答

93

描述:

.each是用於迭代僅jQuery的 對象集合而jQuery.each$.each)是一般 函數用於遍歷的javascript對象和數組迭代器。

實例:

JavaScript數組使用$。每個()(或者JS對象):

var myArray = [10,20,30]; 

jQuery.each(myArray, function(index, value) { 
    console.log('element at index ' + index + ' is ' + value); 
}); 

//Output 
element at index 0 is 10 
element at index 1 is 20 
element at index 2 is 30 

使用。每個jQuery的對象()

$('#dv').children().each(function(index, element) { 
    console.log('element at index ' + index + 'is ' + (this.tagName)); 
    console.log('current element as dom object:' + element); 
    console.log('current element as jQuery object:' + $(this)); 
}); 

//Output 
element at index 0 is input 
element at index 1 is p 
element at index 2 is span 

如果您正在尋求進一步的例子+細節,$.each vs .each()

資源

3

你想真的使用$.each與數組不是元素或東西。即:

var x = ["test", "test2"]; 

你會使用$.each(x...遍歷,與其x.each :)

.each是元素只:)

1

第一個將要運行的回調函數的元素集合中你已經通過了,但你的代碼目前在語法上不是正確的。

它應該是:

$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something); 

參見:http://api.jquery.com/jQuery.each/

第二個將運行在運行它的集合中的每個元素的功能。

參見:http://api.jquery.com/each/

+0

您正在調用'do_something'而不是傳遞它。除非'do_something'發生返回函數,否則這是不正確的。 – user113716

+1

啊,是的,謝謝@patrick dw,回答編輯得當。 – StuperUser

0

http://api.jquery.com/jQuery.each/

採取的$.each()功能是不一樣的.each(),其被用於迭代,排他地,在jQuery對象。函數$.each()可用於迭代任何集合,無論它是地圖(JavaScript對象)還是數組。在數組的情況下,每次回調都會傳遞一個數組索引和相應的數組值。 (該值也可以通過this關鍵字訪問,但是Javascript始終將此值作爲Object包裝,即使它是簡單的字符串或數字值。)該方法返回其第一個參數,即迭代的對象。

1

有沒有功能差異。每個jQuery對象擁有從jQuery.fn繼承的.each()方法。通過調用object method,jQuery已經知道要迭代哪個Array (-like object)。換句話說,它從當前的jQuery對象遍歷indexed propertys

$.each(),另一方面僅僅是一個「輔助工具」,它會遍歷任何形式的ArrayObject,當然,你要告訴你想要遍歷其靶向方法。
它也會照顧你是否通過一個數組或對象,它使用底層的for-infor loop做正確的事情。

5

http://api.jquery.com/jQuery.each

的$。每個()函數是不相同 爲。每個(),其被用於迭代, 排他地,在jQuery對象。可以使用$ .each()函數 迭代任何集合,無論是 它是一個映射(JavaScript對象)還是一個 數組。

0

在第一種情況下,你可以在jQuery的對象以及其他數組項遍歷如下所示:

jQuery.each()

在第二種情況下,你只能itterate在jQuery的對象如下所示:

.each()

0

從我的理解通過一個對象或數組$.each();循環和使ÿ ou迭代器和每個項目的值。

$().each();循環遍歷一個jQuery對象列表,併爲您提供迭代器和jQuery對象。