Цепочка событий Jquery - PullRequest
       7

Цепочка событий Jquery

6 голосов
/ 16 января 2009

На основании этого вопроса

Я не хочу засорять свои готовые вещи в ожидании "события щелчка" И "события изменения" И "события мыши" Я хочу, чтобы все эти вещи были в одной функции или событии.

Возможно связать события вместе. Я хочу зафиксировать не только нажатие клавиш, но также щелчок или изменение в случае, если пользователя нет на клавиатуре.

<script language="javascript" type="text/javascript">
$(document).ready( function () {
    setMaxLength();
    $("textarea.checkMax").keyup(function(){ checkMaxLength(this.id); } );
    $("textarea.checkMax").mouseover(function(){ checkMaxLength(this.id); } );
});
</script>

Это работает

$(document).ready( function () {
    setMaxLength(); 
    $("textarea.checkMax").bind("click mouseover keyup change", function(){checkMaxLength(this.id); } )
});

Ответы [ 2 ]

18 голосов
/ 16 января 2009

Я думаю, что вы ищете привязку. Bind может связать несколько событий с одной и той же функцией, используя один вызов вместо цепочки:

$("textarea.checkMax").bind("keyup mouseover", checkMaxLength);
5 голосов
/ 16 января 2009

Все, что возвращает объект jQuery, может использоваться для цепочки. В общем, все возвращает объект jQuery, поэтому, если API явно не говорит об этом, есть вероятность, что конкретный метод возвращает объект jQuery и может быть связан.

В случае событий, да, они возвращают объект jQuery и поэтому могут быть связаны. Смотрите здесь

В вашем случае вы можете создать внешнюю функцию, которая принимает один параметр, объект, с которым произошло событие, а затем проверить его длину или все, что вы хотите сделать. Затем вы просто звоните mouseUp(myFunction).mouseOut(myFunction).keyPress(myFunction) или тому, что вы хотели соединить вместе.

Вот более явный пример:

<script language="javascript" type="text/javascript">
$(document).ready( function () {
    setMaxLength();
    $("textarea.checkMax").keyup(checkMaxLength()).
        mouseover(checkMaxLength(this.id));
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...