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


81

这有什么区别:

$.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(),在另一种情况下,需要使用.each(function(){})。

它们是否可以互换?仅在某些情况下?决不?


您的第一个代码示例缺少右括号。
tjollans 2011年

评论和逗号,请参阅我的答案作为示例。
StuperUser 2011年

第一个示例的意图可以用几种不同的方式来解释。请更正它以反映您的实际工作。
user113716 2011年

我在行的末尾(分号之前)添加了缺少的右括号。
marky

请参阅jQuery $ .each()的5种使用方式codepedia.info/use-jquery-each-method-loop
Satinder singh

Answers:


102

描述:

.each是一个迭代器,仅用于迭代jQuery对象集合,而jQuery.each$.each)是用于迭代JavaScript对象和数组的通用函数。


例子

1)使用$.each() 功能

var myArray = [10,20,30];

$.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

2)使用.each() 方法

$('#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

资源资源


5

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

$ .each()函数与.each()不同,后者仅用于遍历jQuery对象。$ .each()函数可用于遍历任何集合,无论它是映射(JavaScript对象)还是数组。


3

您想真正使用$.each不是元素或其他东西的数组。即:

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

您通常使用$.each(x...遍历而不是x.each:)

.each 仅用于元素:)


1

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

$.each()另一方面,它只是一个“帮助器工具”,它遍历任何一种Arrayor Object,但是您必须告诉该方法要迭代的目标。
无论您传入数组还是对象,它都会照顾您,使用afor-infor loop在底层执行正确的操作。


1

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

它应该是:

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

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

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

参见:http : //api.jquery.com/each/


您正在打电话do_something而不是通过它。除非do_something碰巧返回函数,否则这是不正确的。
user113716 2011年


0

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

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.