我在气候模型上工作,并将其显示在地图网格上。我必须使用大网格:39x60。
所以我必须使用jQuery管理2340 <div>
。我想使用jQuery滑块来放大/缩小:
$("#zoom_slider").slider({
orientation: "vertical",
value: 1,
min: 1,
max: 10,
step: 1,
slide: function( event, ui ) {
$('.case').css('width', function(index) {
return index * ui.value;
});
$('.case').css('height', function(index) {
return index * ui.value;
});
}
});
每个单元格都是按照此示例构建的:
<div id="c13_53" class="case line_13 col_53" style="width: 17px; height: 17px; top: 216px; left: 937px;"></div>
但是当执行该函数时,firefox会崩溃。
有没有办法解决这个问题?
答案 0 :(得分:2)
代码效率低下的原因是您每次div
次事件重新选择slide
次。 $('.case')
强制扫描整个DOM。您应该将元素缓存在变量中并重用该变量,而不是不断重新扫描。
另一个效率低下的问题可能是,当您滑动时,多个slide
事件可能会被触发;给你的处理程序加油门可以加快速度。
答案 1 :(得分:1)
你打算用它的索引来设置每一个吗?这意味着无论滑块走向哪个方向,它们都会变得更大,更大。我认为最好存储一个参考值。
//Size in pixels.
var originalSize = 20,
cases = $('.case');
stop: function(_, ui) {
var size = ui.val * originalSize;
cases.css({width: size + 'px', height: size + 'px'});
}
按照雅各布的建议使用停止。 这至少会使它更有效率,它是否会停止崩溃,不知道。