0

我有一个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 并希望单击该类名以运行其他函数,但是当我单击链接时,它运行该函数并将类名更改为 meetSubmitter 并改回相同的类,即 add_enounter

function add_encounter(encounters) {
     if ($('.add_encounter').text() == "Add"){        
        $('.add_encounter').removeClass().addClass("encounterSubmitter")
     } 
    $('.encounterSubmitter').click(function(event) {save(); event.preventDefault();}); 
}

保存功能如下

  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

我知道这个问题有点令人困惑,但我希望理解它或遇到过这种问题能够给我解决方案。

4

2 回答 2

0

无法测试这个权利,但也许这会奏效:

    $('.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 函数调用了 save 函数。因此,他会检查您的密钥,然后调用 cancel_encounter 函数重置链接。

即使在加载 javascript 后加载要绑定的元素,实时调用也将起作用。

于 2010-10-29T11:54:20.250 回答
0

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();
});
于 2010-10-29T12:04:58.460 回答