寻找关于我的语法对于这个Prototype到jQuery转换是否正确的一些建议。
我同时加载两个框架,并希望将所有脚本转换为jQuery,以减少页面加载的重量和速度。
希望在jQuery中复制它:
if (snapshots.items.length < snapshots.total_entries) {
new Ajax.Request(snapshots.url, {
method: 'GET',
parameters: {
page: snapshots.current_page + 1,
per_page: snapshots.per_page
},
onSuccess: function(response) {
var start = snapshots.items.length;
snapshots.items = snapshots.items.concat(eval(response.responseText));
for (i = start; i < snapshots.items.length; i++) {
$('snapshots').appendChild(render_snapshot(snapshots.items[i].snapshot));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides.push($('slide_' + snapshots.items[i].snapshot.id));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides[i]._index = i;
}
snapshots.current_page++;
Photo.Filmstrip.currentSnapshot(currentSnapshot);
}
});
}
if (snapshots.items.length < snapshots.total_entries) {
$j.ajax({
url: snapshots.url,
data: {
page: snapshots.current_page + 1,
per_page: snapshots.per_page
},
success: function (response) {
var start = snapshots.items.length;
snapshots.items = snapshots.items.concat(eval(response.responseText));
for (i = start; i < snapshots.items.length; i++) {
$j('.snapshots').append(render_snapshot(snapshots.items[i].snapshot));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides.push($j('slide_' + snapshots.items[i].snapshot.id));
Photo.Carousels.instances[Photo.Filmstrip.carouselIndex].slides[i]._index = i;
}
snapshots.current_page++;
Photo.Filmstrip.currentSnapshot(currentSnapshot);
}
});
}
答案 0 :(得分:0)
是的,这看起来是正确的 - 我知道jQuery比Prototype好得多,所以我猜一点,但它有意义(假设你已经使用$.noConflict
将jQuery
分配给{{ 1}})。正如@Greg在他的评论中指出的那样,唯一的问题是$j
- 我假设您正在返回JSON数据,因此如果您包含配置选项:
eval
jQuery将以比普通dataType: 'json'
更安全的方式自动解析它。事实上,我很确定在大多数情况下,如果你不让这个选项出来,jQuery会嗅探你的响应体并智能地猜测是否要将它解析为JSON,XML,HTML,脚本或文本,在这种情况下你的{{{ 1}}是不必要的。