2012-02-26 56 views
0

我有一个div#元素,我使用jquery在间隔中更改css样式。我可以禁用一段时间更改css风格的元素吗?

var i = 0; 

function changeStyle() { 

    $("#element").css("left",i+1); 

} 

setInterval("changeStyle()",500); 

如何阻止元素改变风格一段时间?有没有像$("#element").stop();函数,使我可以禁用元素更改任何东西?

我不想为这个问题提供任何其他解决方案,我只想知道是否有像stop()函数那样的任何东西。

+0

请NEVER传递字符串为'的setInterval()' - 使用函数来代替:'的setInterval(changeStyle,500);',或者,如果你想传递参数给函数,'setInterval(function(){someFunc('with','args');},500);' – ThiefMaster 2012-02-26 19:19:30

+0

为什么传错字符串是错误的? – 2012-02-26 20:57:29

+0

这就像使用'eval()'一样,当处理参数时,它会变得非常难看,你可能会打开JavaScript注入漏洞。 – ThiefMaster 2012-02-26 20:59:40

回答

1

来实现这一目标的最好方法是创建一个!important CSS规则:

// Lock the `left` style in a fixed state, say "0px" 
$('<style id="my-style">#element{left:0 !important;}</style>').appendTo('head'); 

如果当前元素没有ID,则可以暂时分配一个ID。
当元件具有被 “解锁” 再次,可使用:

$('#my-style').remove(); 
+0

注:我假设你不能/不想修改原始代码。您也可以事先定义一个'