【发布时间】:2017-03-17 09:52:06
【问题描述】:
我有一个包含很多 Div 的页面,并且我正在使用 panzoom jquery 脚本。为了加快页面速度,如果页面缩小到指定值以上,我想禁用 div 上的阴影,如果页面放大则启用阴影。目前我有这个代码,即被称为每 0.5 秒:
function shadow()
{
var $panzoom = $('.panzoom').panzoom();
var matrix = $panzoom.panzoom("getMatrix");
$("#zoomf").html(matrix[0])
//if zoom is bigger than 0.35 enable shadows
if (matrix[0] > 0.35)
{
var $elements = $('.machinebox').addClass('shadow');
var $elements2 = $('.playerbox').addClass('shadow');
}
else
{
$elements.removeClass('shadow');
$elements2.removeClass('shadow');
}
}
我面临的问题基本上有两个:
1) var $elements 始终不存在,它只在阴影存在时才存在。因此,如果我缩小,它会移除阴影,然后生成错误: SCRIPT5007:无法获取未定义或空引用的属性“removeClass” 德 (282,3)
2) 当它添加/移除阴影时,它会冻结大约一秒钟。能以某种方式避免这种情况吗?
【问题讨论】:
-
您误解了变量的工作原理。
var $elements只能是一个,不能是两个。两次声明$elements是错误的。$elements.removeClass('shadow');两次将对同一个元素做同样的事情。 -
你可以这样做
$('.machinebox, .playerbox').toggleClass("shadow", (matrix[0] > 0.35)) -
Xfox 谢谢,你是对的,那是一个错误,更新了代码。
-
@Titus 这就像一个魅力谢谢!现在可以做点什么来解决第 2 点吗?
-
我不确定是什么原因造成的,获取矩阵可能需要一些时间。你打电话给
panzoom()两次。我认为您可以直接使用var matrix = $('.panzoom').panzoom("getMatrix");获取矩阵
标签: javascript jquery css shadow