2012-02-26 2 views
0

У меня есть элемент div #, который я меняю в стиле css в интервале, используя jquery.Могу ли я отключить элемент из-за изменения стиля CSS?

var i = 0; 

function changeStyle() { 

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

} 

setInterval("changeStyle()",500); 

Как остановить элемент от изменения стиля на некоторое время? Есть ли что-то вроде функции $("#element").stop();, которая позволяет мне отключить элемент от изменения чего-либо на нем?

Я не хочу другого решения этой проблемы, я просто хочу знать, есть ли что-то вроде функции stop().

+0

Пожалуйста, никогда не передать строку в 'setInterval()' - использовать функцию вместо того, чтобы: 'setInterval (changeStyle, 500);' или, если вы хотите передать аргументы функции, 'setInterval (function() {someFunc ('with', 'args');}, 500);' – ThiefMaster

+0

Почему неправильно передавать строку? –

+0

Это похоже на использование 'eval()' - и при работе с аргументами это будет очень уродливо, и вы рискуете открыть отверстия для инъекций javascript. – ThiefMaster

ответ

1

Лучший способ для достижения этой цели заключается в создании правила CSS !important:

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

Если текущий элемент не имеет идентификатора, вы можете временно назначить его.
Когда элемент должен быть "разблокирован" снова, используйте:

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

Примечание: Я предположил, что вы не можете/не хотите изменять исходный код. Вы также можете заранее определить элемент '