$ .each(selector)和$(selector).each()之间有什么区别

时间:2011-07-07 13:16:33

标签: jquery 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文档,但我仍然不明白其中的区别。 (这是我还是文件有时在内容的清晰度上略显“模糊”?)

已添加信息

显然,我的尝试是一个通用的例子让人困惑!与第一个示例中的(先前)缺少的括号一起。 :(

第一个示例来自我的代码中的一行,删除了&lt; tbody&gt;对于任何选中了复选框的行:

$.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()而在另一部分中使用.each(function(){})情况下。

它们可以互换吗?仅在某些情况下?从未?

8 个答案:

答案 0 :(得分:98)

说明:

  

.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()

<强>资源

答案 1 :(得分:5)

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

  

$ .each()函数不一样   as .each(),用于迭代,   仅限于jQuery对象。该   $ .each()函数可以用来   迭代任何集合,无论是   它是一个地图(JavaScript对象)或   阵列。

答案 2 :(得分:3)

您希望将$.each与非元素或类似的数组一起使用。即:

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

您使用$.each(x...来代替x.each:)

.each仅适用于元素:)

答案 3 :(得分:1)

第一个将回调函数运行到您传入的集合中的元素,但是您的代码目前在语法上并不正确。

应该是:

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

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

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

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

答案 4 :(得分:1)

没有功能差异。每个jQuery对象都拥有一个从.each()继承的jQuery.fn方法。通过调用此object method,jQuery已经知道要迭代哪个Array (-like object)。换句话说,它在当前jQuery对象的indexed propertys上循环。

另一方面,

$.each()只是一个“帮助工具”,可以循环任何类型的ArrayObject,但当然你必须告诉该方法你想要的目标迭代。
无论你传入一个数组还是一个对象,它都会照顾你,它使用for-infor loop来做正确的事。

答案 5 :(得分:0)

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

  

$.each()函数与.each()不同,$.each()用于独占于jQuery对象进行迭代。 {{1}}函数可用于迭代任何集合,无论它是映射(JavaScript对象)还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。 (也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,即迭代的对象。

答案 6 :(得分:0)

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

jQuery.each()

在第二种情况下,你只能按照这里所示的jQuery对象进行迭代:

.each()

答案 7 :(得分:0)

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

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