2014-09-09 4 views
0

У меня есть очень простой код, который привязывает кнопку мыши. Но функция обратного вызова внутри клика вызывается, когда привязана.jQuery запуск функции при регистрации нажмите

var showBtn = function (step) { 
switch (step) { 
    case '#step-one': 
     $('#btnPatientAnonyme').show(); 
     $(".btnPopUp > input[data-type='prev']").hide(); 
     $(".btnPopUp > input[data-type='next']").click(showStep('#step-two')); 
    break; 
} 
}; 

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

Так почему же это странное поведение?

Благодарим за помощь.

ответ

1

Вы вызываете функцию, когда вы делаете привязку: showStep('#step-two')

Если вы хотите передать дополнительную информацию в ваш метод, то вам нужно нужно использовать $.trigger. Это позволит вам вызвать событие щелчка и передать дополнительный селектор:

$(".btnPopUp > input[data-type='next']").trigger("click", "#step-two"); 

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

Таким образом, полный код будет выглядеть примерно так:

$(".btnPopUp > input[data-type='next']").click(showStep); 

var showBtn = function (step) { 
    switch (step) { 
     case '#step-one': 
      $('#btnPatientAnonyme').show(); 
      $(".btnPopUp > input[data-type='prev']").hide(); 
      $(".btnPopUp > input[data-type='next']").trigger("click", "#step-two"); 
      break; 
    } 
}; 

function showStep(event, selector) { ... } 

Fiddle Example


Похоже, может быть, вы желаете, чтобы условно прикрепить событие с параметром, в отличие от запуска его , Я неправильно читаю OP. Вы можете прикрепить дополнительную информацию «на ходу-ин» с помощью $.on:

$(".btnPopUp > input[data-type='next']").on("click", null, "#step-two", showStep); 

function showStep(event) { ... }; // selector would be in event.data 

Вот Fiddle для использования $.on.

+0

Да, но если я запускаю функцию в корпусе коммутатора, у меня такое же поведение. Итак, как зарегистрировать дополнительный параметр без запуска функции? –

+0

Я не уверен, что понимаю, что вы имеете в виду. Я обновил свой ответ с лучшим объяснением того, как код должен быть структурирован. Событие click необходимо связать, чтобы вы могли его запускать. Как только он привязан, вы можете использовать '$ .trigger', чтобы заставить событие срабатывать, и отправить дополнительную информацию. Обновление также включает пример Fiddle. – Bic

+0

Ваш пример хорош, но мне нужно «зарегистрировать» в корпусе коммутатора «следующую кнопку» (когда я нажимаю первый шаг, затем следующая кнопка будет вторым шагом ...) и не запускает кнопку, пока пользователь не нажмет на кнопку «Далее». Поэтому, если я использую этот метод, второй шаг показан, когда я задаю первый шаг. –

Смежные вопросы