Просмотр полной версии : очередь выполнения функций
Здравствуйте.
код:
$('#id1').on('mouseenter', function(){
$('.class1').addClass('class2');
});
$('.class2').on('mouseenter', function(){
alert('class2');
});
не срабатывает. и понятно почему.
потому что class2' на момент запуска "mouseenter" ещё не существует.
Отсюда следует.
как поставить очерёдность.
Чтобы вторая функция не выполнялась, пока не закончится первая.
Dtri,
поставить вторую функцию на элемент в котором находится class1
ruslan_mart
07.01.2015, 17:15
Или делегирование.
$(document).on('mouseenter', '.class2', function() {
alert('class2');
});
Или делегирование.
$(document).on('mouseenter', '.class2', function() {
alert('class2');
});
я что-то не понял. а Чем отличается ваш пример от моего?
Dtri,
поставить вторую функцию на элемент в котором находится class1
не могли бы вы показать на примере
?
$(document).on('click', '.class1', function() {
$('.class1').addClass('class2');
}, function() {
alert('class2');
});
правильно ли я вас понял?
Dtri, http://api.jquery.com/on/
давно бы выложил полный тестовый пример и получил ответ
не могли бы вы показать на примере
вам показали в 3 посте Ruslan_xDD,
только вместо document можно элемент ближе к 'class2'
ваш пример в 7 посте неверный
Dtri, http://api.jquery.com/on/
давно бы выложил полный тестовый пример и получил ответ
http://jsfiddle.net/akzwv375/
тут пример. он ещё далеко не доделанный.
нужно было повесить событие на
dropDown
но его не существовало когда запускался скрипт и отсюда возникло желание поставить запуск в очередь.
изначально хотел
$('.dropDown_'+id).on('mouseenter', function(){
$(this).addclass('active');
});
$('.active').on('mousedown', function(){
$('#'+id).val( $(this).html()).trigger('change');
$('#'+id).trigger('inputChanged');
});
естественно это не работало.
и тогда:
этой вложенностью вышел из положения.
$('.dropDown_'+id).on('mouseenter', function(){
$(this).on('mousedown', function(){
$('#'+id).val( $(this).html()).trigger('change');
$('#'+id).trigger('inputChanged');
});
});
но возникло чувство что я делаю что-то не так.
http://jsfiddle.net/akzwv375/
<input type='text' id='id1' class='class1'>
:blink: ты просто добавляешь дополнительный класс к элементу?
можно просто поставить условие, что если второй класс есть, то делать то-то
вам показали в 3 посте Ruslan_xDD,
только вместо document можно элемент ближе к 'class2'
ваш пример в 7 посте неверный
значит вот так?
http://jsfiddle.net/2z6ro1k2/2/
вот так работает.
http://jsfiddle.net/2z6ro1k2/3/
но если у меня будет 3, 4, 5 последовательно выполняющихся действий. как быть тогда?
:blink: ты просто добавляешь дополнительный класс к элементу?
можно просто поставить условие, что если второй класс есть, то делать то-то
я там подправил коментарии.
Не понял о чём вы. в действующем коде никакого класса к инпуту не добавляется.
создаётся нвоый див в него помещается инпут и потом к инпуту внутри нового дива достраивается список "выпадалки"
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<style>
.class1 {
cursor: pointer;
}
</style>
<div id='id1' class='class1'>DI1</div>
<script>
$("#id1").on('click', function() {
if ( $(this).hasClass("class2") ) {
alert("class2");
} else {
$(this).addClass("class2");
}
});
</script>
Не понял о чём вы. в действующем коде никакого класса к инпуту не добавляется.
создаётся нвоый див в него помещается ипут и потом к инпуту внутри нового дива достраевается список выпадалки
почитай это (http://javascript.ru/forum/misc/3706-kak-sprosit-chtoby-vam-otvetili.html) и сделай нормальный тестовый пример, иначе там у тебя ещё что-нибудь появится
Dtri, http://api.jquery.com/on/
давно бы выложил полный тестовый пример и получил ответ
Хотелось бы чтобы было что-то типа case
но для очереди в jquery.
например.
1: function1
2: function2
3: function3
и выполнение будет соответственно 1 затем 2, затем 3
жаль что такой возможности нет.
код писать было бы намного легче
Хотелось бы чтобы было что-то типа case
но для очереди в jquery.
например.
1: function1
2: function2
3: function3
и выполнение будет соответственно 1 затем 2, затем 3
жаль что такой возможности нет.
код писать было бы намного легче
http://javascript.ru/forum/jquery/52361-pereklyuchit-tuda-i-obratno.html
и ещё кучка тем, можно допилить и case, вопрос каков интерфейс для использования
bes,
боюсь ты не совсем понял вопроса.
возможно это моя вина. не достаточно точно поставил вопрос. Потому я и код не хотел показывать. Код то я сделал. Но хочется оптимизировать и ищу средства.
я пытаюсь узнать. возможно ли как-нибудь сообщить js
выполнять функции в определённом порядке.
например:
$(document).doFunction(func1, func2, func3)
и чтобы скрипт знал что эти функции нужно запускать имеено в таком порядке.
а именно: не запускать func2 пока не выполнится func1.
Есть ли функция в jquery которая выполняет данный алгоритм?
bes,
боюсь ты не совсем понял вопроса.
возможно это моя вина. не достаточно точно поставил вопрос. Потому я и код не хотел показывать. Код то я сделал. Но хочется оптимизировать и ищу средства.
я пытаюсь узнать. возможно ли как-нибудь сообщить js
выполнять функции в определённом порядке.
например:
$(document).doFunction(func1, func2, func3)
и чтобы скрипт знал что эти функции нужно запускать имеено в таком порядке.
а именно: не запускать func2 пока не выполнится func1.
тут именно и важно то, как всё это будет применяться, иначе
f1();
f2();
и вторая функция не выполнится, пока не выполнится первая
если запись в разных местах кода, можно поставить флаг, проверка появления класса у элемента - как раз из этой оперы
f1();
f2();
и вторая функция не выполнится, пока не выполнится первая
если запись в разных местах кода, можно поставить флаг, проверка появления класса у элемента - как раз из этой оперы
изходя из твоих слов должно работать следующее:
<div id='id1'>id1</div>
function f1(){
$("#id1").adclass('class1');
}
function f2(){
$(".class1").adclass('class2');
}
function f3(){
$(".class2").adclass('class3');
$('.class3').html('class3');
}
$('#id1').on('click', function(){
f1();
f2();
f3();
});
Но оно не работает.
http://jsfiddle.net/r7632m57/
потом что функции то запускаются последовательно, но не дожидаются ввыполнения предыдущей.
Но оно не работает.
http://jsfiddle.net/r7632m57/
может ошибку c adclass для начала исправить
PS: весь пример можно собрать вместе и выложить здесь с кнопкой run
может ошибку c adclass для начала исправить
PS: весь пример можно собрать вместе и выложить здесь с кнопкой run
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>on demo</title>
<style>
#id1 {
cursor:pointer;
}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id='id1'>id1</div>
<script>
function f1(){
$("#id1").addClass('class1');
}
function f2(){
$(".class1").addClass('class2');
}
function f3(){
$(".class2").addClass('class3');
$('.class3').html('class3');
}
$('#id1').on('click', function(){
f1();
f2();
f3();
});
</script>
</body>
</html>
ну тебе же консоль пишет, что бл-ть не понимаю я, что такое adclass :)
замени на addClass (http://api.jquery.com/addClass/) и по-моему всё работает как надо :yes:
ну тебе же консоль пишет, что бл-ть не понимаю я, что такое adclass :)
замени на addClass (http://api.jquery.com/addClass/) и по-моему всё работает как надо :yes:
поменял. перечитай.
но попрежнему не работает.
оу. виноват....
Регистр верхний. ложанулся.
поменял. перечитай.
но попрежнему не работает.
чего не работает-то, добавился класс class1, потом class2, потом class3 и html заменился на class3, а ты чего хотел?
Спасибо за терпение и вкрадчивое объяснение всем участникам... кому мог поставил +. ещё раз огромное человеческое спасибо!!!
оу. виноват....
Регистр верхний. ложанулся.
Спасибо за терпение и вкрадчивое объяснение всем участникам... кому мог поставил +. ещё раз огромное человеческое спасибо!!!
собственно об этом и шла речь здесь :)
http://javascript.ru/forum/site/49174-zachem-ts-dolzhen-sdelat-testovyjj-primer-s-vozmozhnostyu-zapuska.html
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot