jquery определяет собственные события?



Можно ли определить событие на входе, которое срабатывает при этих обстоятельствах.




a) is called on blur of input IF the remaining conditions are true
b) if the autocomplete list is visible halt the event until it is closed
c) if the autocomplete list closes without an item being selected then the event is fired
d) if the autocomplete list closes with an item being selected the event is not fired
e) if the reason the blur was caused was because an item in the autocomplete was clicked the event is not fired


Как вы можете видеть, событие имеет довольно много к нему.
Я не могу использовать обычный setTimeout в случае размытия, потому что пользователь может сидеть в списке автозаполнения, фактически ничего не выбирая.



Может быть, я мог бы установить переменную в autocomplete open, чтобы мы знали, что она все еще открыта.

если таймер истекает, а автозаполнение все еще открыто, мы можем сбросить таймер.

а потом дальше закрыть мы можем отменить установку переменной.

или по выбору предмета мы можем отключить таймер?



Что вы думаете?

715   2  

2 ответов:

Можно запускать собственные события с помощью функции Trigger. Это означает, что вы можете вызывать событие в разных точках кода, поэтому вам не нужно писать сложные конструкции.

Просто позвоните так: $('.yourClass').trigger('myEvent');

Привязка к этому событию может осуществляться через .bind(), т. е. $('.yourClass').bind('myEvent', function () { });

Вы можете использовать плагинfling для вызова пользовательских событий и прикрепления прослушивателей для них. Код будет выглядеть примерно так:

$(yourinput).blur(function(){
    if(....your condition....)
        $.fling('publish','YourEventName',your data in json);
}

Чтобы прикрепить слушателя:

 $.fling('subscribe','YourEventName', function(){
 });

Comments

    Ничего не найдено.