这有什么区别:
$.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(){})情况下。
它们可以互换吗?仅在某些情况下?从未?
答案 0 :(得分:98)
说明:
.each
是一个迭代器,用于仅迭代jQueryjQuery.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://api.jquery.com/jquery.each/ .each
doc:http://api.jquery.com/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/
第二个将在您运行它的集合的每个元素上运行该函数。
答案 4 :(得分:1)
没有功能差异。每个jQuery对象都拥有一个从.each()
继承的jQuery.fn
方法。通过调用此object method
,jQuery已经知道要迭代哪个Array (-like object)
。换句话说,它在当前jQuery对象的indexed propertys
上循环。
$.each()
只是一个“帮助工具”,可以循环任何类型的Array
或Object
,但当然你必须告诉该方法你想要的目标迭代。
无论你传入一个数组还是一个对象,它都会照顾你,它使用for-in
或for loop
来做正确的事。
答案 5 :(得分:0)
取自http://api.jquery.com/jQuery.each/
$.each()
函数与.each()
不同,$.each()
用于独占于jQuery对象进行迭代。 {{1}}函数可用于迭代任何集合,无论它是映射(JavaScript对象)还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。 (也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,即迭代的对象。
答案 6 :(得分:0)
答案 7 :(得分:0)
根据我的理解$.each();
循环遍历一个对象或数组,并为您提供每个项目的迭代器和值。
$().each();
循环遍历jQuery对象列表,并为您提供迭代器和jQuery对象。