Проблема со статической переменной в JQuery
Вопрос
if(i==0){
$(document).ready(function(){
$("div#rozet").hover(function(){
$(this).hide("fast");
$(this).animate(
{ top:'+45px', left:'+500px'},
{duration: 1}
);
$(this).show("slow");
$(this).stopall();
});
i=1;
}
if(i==1){
$("div#rozet").hover(function(){
$(this).hide("fast");
$(this).animate(
{ top:'-85px', left:'+500px'},
{duration: 1}
);
$(this).show("slow");
$(this).stopall();
});
});
i=0;
}
Извините, я немного говорю по-английски.В общем, я начинаю :D
Я хочу выполнять эти функции с очередью.Но я всегда 0.Я знаю, что делаю это.Так что я могу сделать :D
Могу ли я использовать переменные CSS.(div#rozet).top, я могу использовать ее, если
Решение
Вам нужно использовать else if.Если вы вызываете функцию, которая запускает эти два if, оба будут работать, если i == 0.Вы можете проверить это, поместив предупреждение в каждую функцию.Когда i равен 0, первый оператор if истинен и выполняет работу и устанавливает i равным 1, а второй if запускает его сейчас также является истинным, поскольку последний оператор if устанавливает i равным 1.
i = 0;
jQuery("#subheader").click(function () {
if (i == 0) {
alert ("i was 0");
i = 1;
}
else if (i == 1) {
alert ("i was 1");
i = 0;
}
});
Это конечный результат, который я создал с помощью Firebug.Если у вас есть поджигатель вы можете запустить это в консоли на этой странице.После его запуска вы можете нажать на строку, содержащую количество ответов и параметры сортировки.Я думаю, это примерно то, что вы искали.
Другие советы
где меня объявляют и устанавливают?
Но у вас есть if (i == 0)
Перед $ (document) .ready (function () {
Это проблема.$(document).ready() — это обработчик событий, поэтому код в $(document).ready() вызывается независимо от того, чему i равен.
Вам придется переработать свой код, чтобы
$(document).ready(function(){
if (i == 0) {
...
}
if (i == 1) {
...
}
}