$ .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或数字值。)该方法返回它的第一个参数,即被迭代的对象。