$.each(data, function (i, val) {
$(':checkbox.' + i).prop('checked', (val == 1 ? true : false));
$(':text.' + i + ', select.' + i).val(val);
});
data是一个JSON对象。当我运行它时,IE7会对缓慢的脚本大哭。我将值从json对象映射到类名“i”。有没有办法让这个选择器运行得更快?代码有效,但迭代每个元素的速度必须更快,以摆脱ie7慢脚本消息。感谢
答案 0 :(得分:1)
不使用没有容器或缩小上下文的伪选择器,根据我的经验,它们在IE7或IE8 compat模式下运行缓慢且特别糟糕。
用$(":etc")
切换$("#container").find("input:text")
语法并尝试用传统的for循环替换$ .each(假设$ .each正在迭代很多东西,否则影响可以忽略不计)
将容器缓存在循环之外。
var $container = $("#container");
$.each (etc, function(i) {
var a = $container.find("input:text");
// do more stuff
}
某些标记可能会为我提供一个更具体的机会
答案 1 :(得分:0)
一些提示:
.prop()
通常比.attr()
缩小选择器范围:“:checkbox
”和“:text
”仅适用于输入
$('input:复选框。'+ i).attr('checked',Boolean(val));
$('输入:文字。'+ i +',选择。'+ i).val(val);
答案 2 :(得分:0)
你能把它缩小到父母吗?即,你可以从形式,div等内部开始这些元素吗?
var $memoized_form = $( 'form#the_form' );
$.each(data, function (i, val) {
$memoized_form.find( 'input:checkbox.' + i ).prop('checked', (val == 1 ? true : false));
$memoized_form.find( 'input:text.' + i + ', select.' + i).val(val);
});