jQuery, как заменить className href и нажать на то же время, чтобы запустить функцию - PullRequest
0 голосов
/ 29 октября 2010

У меня есть ссылка href, как показано ниже

<a href="#" class="add_encounter">Add</a>

в $(document).ready Я запускаю эту функцию, как показано ниже

$('.add_encounter').click(function(event) {
    add_encounter(encounters); 
    event.preventDefault();
});

в функции add_encounter я изменил имя класса ahref сadd_encounter, чтобы встретиться с meetSubmitter, и хочет щелкнуть то же самое, чтобы запустить другую функцию, но когда я щелкаю по ссылке, она запускает функцию и меняет имя класса на Встречается с Submitter и возвращается обратно в тот же класс, т.е.как показано ниже

  function save() {
    var encounter = $('#name').val();
    var key = $('#encounterKey').val();
    if (key == '') {
      key = null
    }
   if (encounter == ''){
 cancel_encounter() 
   }
}

cancel_encounter, как показано ниже

function cancel_encounter() {     
        $('.encounterSubmitter').removeClass().addClass("add_encounter")
        $('.add_encounter').text("Add")         
}

Таким образом, функция сохранения проверяет условие if, переходит к функции cancel_encounter и изменяет имя класса обратно на add_encounter

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

Ответы [ 2 ]

0 голосов
/ 29 октября 2010

HTML

<a href="#" class="add my_encounter">Add</a>

JS

$('.my_encounter').bind('click', function(event) {

    if ((this).hasClass('add')){ //add_encounter
      //encounters ???
      $(this).removeClass('add').addClass("submitter")

    }
    else if ((this).hasClass('submitter')){  // save
      var encounter = $('#name').val(),
          key = $('#encounterKey').val();

      if (key == '') {
         key = null
      }
      if (encounter == ''){
        // cancel_encounter
        $(this)
           .removeClass("submitter")
           .addClass("add")
           .text("Add"); //?? where remove text "Add"
      }

    }

    event.preventDefault();
});
0 голосов
/ 29 октября 2010

Не могу проверить это право, но, возможно, это сработает:

    $('.add_encounter').click(function(event) {
        add_encounter(encounters); 
        event.preventDefault();
    });

    function add_encounter(encounters) {
         if ($('.add_encounter').text() == "Add"){        
            $('.add_encounter').removeClass().addClass("encounterSubmitter")
         } 
    }

    $('.encounterSubmitter').live('click',function(event){
        save();
        event.preventDefault();
    });

    function save() {
        var encounter = $('#name').val();
        var key = $('#encounterKey').val();
        if (key == '') {
            key = null
        }
        if (encounter == ''){
            cancel_encounter() 
       }
    }

    function cancel_encounter() {     
        $('.encounterSubmitter').removeClass().addClass("add_encounter")
        $('.add_encounter').text("Add")         
    }

Проблема заключалась в том, что функция сохранения была вызвана вашей функцией add_encounter. Поэтому он проверяет ваш ключ и, в свою очередь, вызывает функцию cancel_encounter, сбрасывающую ссылку.

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

...