我有一个像以下JavaScript对象:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Run Code Online (Sandbox Code Playgroud)
现在我想通过所有回路p
元素(p1
,p2
,p3
...),并得到他们的键和值.我怎样才能做到这一点?
如有必要,我可以修改JavaScript对象.我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval
.
我刚才有一个关于Ruby循环的快速问题.这两种迭代集合的方式有区别吗?
# way 1
@collection.each do |item|
# do whatever
end
# way 2
for item in @collection
# do whatever
end
Run Code Online (Sandbox Code Playgroud)
只是想知道这些是否完全一样,或者是否有一个微妙的差异(可能是什么时候@collection
是零).
在jQuery中,是否可以在调用(或任何其他类型的迭代回调)完成后调用回调或触发事件..each()
例如,我想要"淡化和删除"来完成
$(parentSelect).nextAll().fadeOut(200, function() {
$(this).remove();
});
Run Code Online (Sandbox Code Playgroud)
在做一些计算并在之后插入新元素之前$(parentSelect)
.如果jQuery仍然可以看到现有元素并且睡眠/延迟一些任意时间(每个元素200个)似乎是一个脆弱的解决方案,那么我的计算是不正确的.
我可以很容易地.bind()
为事件回调提供必要的逻辑但是我不确定如何.trigger()
在上面的迭代完成之后干净地调用它.显然,我不能在迭代中调用触发器,因为它会多次触发.
在这种情况下$.each()
,我考虑在数据参数的末尾添加一些东西(我将在迭代体中手动查找),但我不想被迫这样,所以我希望有一些其他的优雅关于迭代回调控制流的方法.
我有一个handlebars.js模板,就像这样:
{{externalValue}}
<select name="test">
{{#each myCollection}}
<option value="{{id}}">{{title}} {{externalValue}}</option>
{{/each}}
</select>
Run Code Online (Sandbox Code Playgroud)
这是生成的输出:
myExternalValue
<select name="test">
<option value="1">First element </option>
<option value="2">Second element </option>
<option value="3">Third element </option>
</select>
Run Code Online (Sandbox Code Playgroud)
正如所料,我可以访问每个元素的id
和title
字段myCollection
来生成我的选择.在select之外,我的externalValue
变量被正确打印("myExternalValue").
不幸的是,在期权的文本中,externalValue
价值从未打印出来.
我的问题是:我怎样才能在循环内访问handlebars.js范围之外的变量?
一如既往,先谢谢.
在我的应用程序中我使用ajax调用.我想在这个jquery循环中使用break并继续.
$('.submit').filter(':checked').each(function() {
});
Run Code Online (Sandbox Code Playgroud) 如果我有一堆(键,值)对的Perl哈希,迭代所有键的首选方法是什么?我听说使用each
可能会以某种方式产生意想不到的副作用.那么,这是真的,并且是以下两种方法中最好的方法之一,还是有更好的方法?
# Method 1
while (my ($key, $value) = each(%hash)) {
# Something
}
# Method 2
foreach my $key (keys(%hash)) {
# Something
}
Run Code Online (Sandbox Code Playgroud) 这似乎是一个愚蠢的问题,但我似乎无法在任何地方找到答案.
我正在点击这个以ASON格式返回对象数组的Web Api:
Handlebars docs显示以下示例:
<ul class="people_list">
{{#each people}}
<li>{{this}}</li>
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
在以下情况下:
{
people: [
"Yehuda Katz",
"Alan Johnson",
"Charles Jolley"
]
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我没有数组的名称,它只是响应的根对象.我试过{{#each}}
没有运气.
第一次使用把手......我错过了什么?
UPDATE
这是一个简化的小提示,以显示我在问什么:http://jsfiddle.net/KPCh4/2/
把手是否需要将上下文变量作为对象而不是数组?
我在用
$('#list option').each(function(){
//do stuff
});
Run Code Online (Sandbox Code Playgroud)
循环遍历列表中的选项.我想知道如何获得当前循环的索引?
因为我不想让var i = 0; 在循环内部有i ++;
如果我有一个循环,如
users.each do |u|
#some code
end
Run Code Online (Sandbox Code Playgroud)
用户是多个用户的哈希值.什么是最简单的条件逻辑,看你是否在用户哈希中的最后一个用户,并且只想为最后一个用户执行特定的代码,所以像
users.each do |u|
#code for everyone
#conditional code for last user
#code for the last user
end
end
Run Code Online (Sandbox Code Playgroud)
谢谢
这有什么区别:
$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());
Run Code Online (Sandbox Code Playgroud)
还有这个:
$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });
Run Code Online (Sandbox Code Playgroud)
正在选择和执行的表格单元格的html如下所示:
<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>
Run Code Online (Sandbox Code Playgroud)
我已经浏览了jQuery文档,但我仍然不明白其中的区别.(这是我还是文件有时在内容的清晰度上略显"模糊"?)
添加信息:
显然,我的尝试是一个通用的例子让人困惑!与第一个示例中的(先前)缺少的括号一起.:(
第一个示例来自我的代码中的一行,它删除了任何行的<tbody>并选中了一个复选框:
$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());
Run Code Online (Sandbox Code Playgroud)
第二个示例来自于我查看#classesTable以查看任何已选中复选框并在下拉列表中删除其匹配项的情况.
$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
$('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});
Run Code Online (Sandbox Code Playgroud)
我知道他们做了两件不同的事情,但是我不能说"我需要在这种情况下使用$ .each()而在另一种情况下需要使用.each(function(){}).
它们可以互换吗?仅在某些情况下?决不?