Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   очередь выполнения функций (https://javascript.ru/forum/jquery/52789-ochered-vypolneniya-funkcijj.html)

Dtri 07.01.2015 03:50

очередь выполнения функций
 
Здравствуйте.

код:
$('#id1').on('mouseenter', function(){
     $('.class1').addClass('class2');
});

$('.class2').on('mouseenter', function(){
alert('class2');
});


не срабатывает. и понятно почему.
потому что class2' на момент запуска "mouseenter" ещё не существует.

Отсюда следует.
как поставить очерёдность.
Чтобы вторая функция не выполнялась, пока не закончится первая.

рони 07.01.2015 08:04

Dtri,
поставить вторую функцию на элемент в котором находится class1

ruslan_mart 07.01.2015 17:15

Или делегирование.

$(document).on('mouseenter', '.class2', function() {
   alert('class2');
});

Dtri 07.01.2015 20:06

спасибо.

Dtri 10.01.2015 18:40

Цитата:

Сообщение от Ruslan_xDD (Сообщение 350126)
Или делегирование.

$(document).on('mouseenter', '.class2', function() {
   alert('class2');
});

я что-то не понял. а Чем отличается ваш пример от моего?

Dtri 10.01.2015 18:41

Цитата:

Сообщение от рони (Сообщение 350015)
Dtri,
поставить вторую функцию на элемент в котором находится class1

не могли бы вы показать на примере
?

Dtri 10.01.2015 18:50

$(document).on('click', '.class1', function() {
       $('.class1').addClass('class2');
        
    }, function() {
       alert('class2');
    });



правильно ли я вас понял?

bes 10.01.2015 19:00

Dtri, http://api.jquery.com/on/
давно бы выложил полный тестовый пример и получил ответ

рони 10.01.2015 19:13

Цитата:

Сообщение от Dtri
не могли бы вы показать на примере

вам показали в 3 посте Ruslan_xDD,
только вместо document можно элемент ближе к 'class2'
ваш пример в 7 посте неверный

Dtri 10.01.2015 19:20

Цитата:

Сообщение от bes (Сообщение 350608)
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');
                });
            });

но возникло чувство что я делаю что-то не так.


Часовой пояс GMT +3, время: 02:58.