События jQuery, выполняющие код в неожиданном порядке - PullRequest
0 голосов
/ 11 января 2010

У меня проблема с выполнением некоторых моих кодов в неожиданном порядке. У меня есть две кнопки, каждая из которых связана с функцией нажатия. Одна кнопка - «Отмена», и она вносит некоторые изменения на дисплее. Вторая кнопка «Готово», которая сохраняет изменения, записывая их в скрытое поле ввода, а затем запускает обработчик события «Отмена». Вот как выглядит мой код.

/*done link*/
$("#donelink").bind('click', function() { 
    var idvalues = $.map($(".ledgerline input:checkbox:checked"), function(el, i) {
  return $(el).val().toString();
}).join(',');
    $("#my_input").val(idvalues);
    $("#cancellink").triggerHandler('click');
  });

/*cancel link*/
$("#cancellink").bind('click', function() {

  /*some basic css and other property changes*/

    $(".ledgerline input:checkbox:checked").parent().parent().trigger('click');

  });

/* The function bound to this event: 
$(".ledgerline input:checkbox:checked").parent().parent().trigger('click');
*/
function { 
    /* other stuff */
    $(this).find("input:checkbox").remove();
}

Что я ожидаю, так это то, что когда я нажимаю ссылку «Готово», она находит значения во всех флажках и записывает их в #my_input. И тогда он нажмет на ссылку отмены, сняв все флажки. Вместо этого происходит то, что все флажки сначала снимаются, а затем в качестве значения записывается пустая строка.

Любая помощь? Я не понимаю, почему это происходит.

Ответы [ 2 ]

1 голос
/ 12 января 2010

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

Спасибо за помощь в любом случае.

0 голосов
/ 11 января 2010

Похоже на эту строку

$("#cancellink").triggerHandler('click');

не ожидает завершения работы $.map и последующего значения, установленного перед выполнением. Вы можете ввести функцию обратного вызова, которая ожидает установки значения перед продолжением.

Не могли бы вы опубликовать демонстрационную версию кода на jsbin , чтобы мы могли посмотреть?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...