$ .each(selector)和$(selector).each()之间的区别是什么?

这有什么区别:

$.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文档,但我仍然不明白其中的差别。 (对我来说,还是说文档在内容清晰度上有时会略微“模糊”?)

补充信息:

显然我的尝试一个通用的例子是混淆的人! 与第一个例子中(先前)缺失的括号一起。 🙁

第一个例子来自于我的代码中的一行,它删除了选中checkbox的任何行的<tbody>:

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

第二个例子来自于我查看#classesTable中任何选中的checkbox并在下拉列表中删除它的匹配项的情况。

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

我明白,他们做了两件不同的事情,但不是我可以说“我需要在这种情况下使用$ .each()和.each(function(){})在另一种情况下。

它们可以互换吗? 只有在某些情况下? 决不?

描述:

.each是一个用于遍历jQuery对象集合的迭代器,而jQuery.each$.each )是一个用于遍历javascript对象和数组的迭代器。

例子:

使用$ .each()的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 

使用.each()的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()

资源

  • jQuery.each$.each )doc: https : $.each
  • .each文档: http : .each
  • jQuery循环通过具有相同类的元素

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

$ .each()函数与.each()函数不同,它用于遍历一个jQuery对象。 $ .each()函数可以用来遍历任何集合,不pipe它是一个映射(JavaScript对象)还是一个数组。

你想真的使用$.each与不是元素或东西的数组。 即:

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

你会使用$.each(x...来遍历,而不是x.each 🙂

.each仅适用于元素:)

没有function差异。 每个jQuery对象都拥有一个从jQuery.fninheritance的.each()方法。 通过调用这个object method ,jQuery已经知道要迭代哪个Array (-like object) 。 换句话说,它循环遍历来自当前jQuery对象的indexed propertys

$.each()另一方面只是一个“辅助工具”,可以循环使用任何types的ArrayObject ,但是当然,您必须告诉该方法您要迭代哪个目标。
它也会照顾你是否传入一个数组或对象,它使用一个for-infor loop的引擎来做正确的事情。

第一个会对你传入的集合中的元素运行callback函数,但是你的代码目前在语法上是不正确的。

它应该是:

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

请参阅: http : //api.jquery.com/jQuery.each/

第二个将在你正在运行的集合的每个元素上运行该函数。

请参阅: http : //api.jquery.com/each/

在第一种情况下,您可以遍历jQuery对象以及其他数组项,如下所示:

jQuery.each()

在第二种情况下,您只能按照以下指示的方式遍历jQuery对象:

。每()

从我理解的$.each(); 循环通过一个对象或数组,并为您提供每个项目的迭代器和值。

$().each(); 循环遍历一个jQuery对象列表,并为您提供迭代器和jQuery对象。

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

$.each()函数与$.each()函数不同,它用于遍历一个jQuery对象。 $.each()函数可以用来遍历任何集合,不pipe它是一个映射(JavaScript对象)还是一个数组。 在数组的情况下,每次callback都会传递一个数组索引和相应的数组值。 (该值也可以通过this关键字来访问,但是Javascript总是将这个值作为一个对象来包装,即使它是一个简单的string或数字值。)该方法返回它的第一个参数,即被迭代的对象。