две функции jquery одновременно - PullRequest
3 голосов
/ 29 марта 2012

У меня есть два jquery, которые я запускаю, и я хочу объединить их в одну строку. Вот пример того, что я пытаюсь сделать.

    ​$(function(){
    $('input').each(function(){
        if ($(this).is(':checked')) {
           $(this).after('this is checked');
        }
    });
    $('input').click(function(){
        if ($(this).is(':checked')) {
           $(this).after('this is checked');
        }
    });
});​

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

Я думал, смогу ли я объединить их в таком утверждении,

$('input').bind('each click');

но я заметил, что даже это не будет работать с каждым. Есть идеи?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Просто назовите функцию ..

function handler() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
}

затем используйте его в обеих ситуациях:

$(function(){
    $('input').each(handler);
    $('input').click(handler);
});​
1 голос
/ 29 марта 2012

Вы не можете связать метод each, потому что это не событие.

Присвойте функцию переменной, чтобы ее можно было повторно использовать:

​$(function(){

  var markChecked = function() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
  };

  $('input').each(markChecked).click(markChecked);
});​

ДругойПодход, который иногда используется, состоит в том, чтобы инициировать событие щелчка на каждом элементе для принудительной начальной проверки:

​$(function(){
  $('input').click(function() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
  }).click();
});​

Это, конечно, предполагает, что запуск события щелчка не имеет побочных эффектов.Если вы уже связали другой обработчик события click с каким-либо из элементов, это также приведет к вызову этого обработчика события.

...