首先调用工作,但后续调用失败,使用on()

时间:2014-06-23 12:37:21

标签: jquery ajax

我有一个模式,允许用户将问题发布到我的网站。通过调用以下函数的按钮完成问题的发布 - 这将问题提交给数据库,但如果输入字段为空,则发送错误。在这两种情况下,都会重新加载模态,如果设置了错误,它将显示在模态上。问题是这个.....我需要重新发布使用重新加载的模态,但是jQuery未加载似乎在ajax调用后似乎不可用。我最初有

  $("#submit_question").click(function(){..... 

但是根据jQuery文档发现我需要.live(),. delegate()。或.on()。堆栈评论建议on()。是在这个阶段使用的那个,因此下面的代码。这适用于第一个ajax呼叫但不允许进一步呼叫。我已经全神贯注地找到了解决这个问题的方法....并且有类似的帖子,但我对它们的阅读表明下面的代码是正确的(但它不可能)。有人可以提出问题吗?

$("#submit_question").on("click", function(){
     var subject = $('#question_subject');
     $.ajax({
      url: '../ajax/submit_question.php',
      type: 'post',
      data: {
          'subject': $('#question_subject').val(),
          'details': $('#question_details').val(),
          },
            success: function(html) {
                if(!$.trim(subject.val()).length){
                  var error = "There was an error";
                 } 
                  $('.reveal-modal').load('question_box.php', {error: error});               
                  }
               });
       return false;
     });

2 个答案:

答案 0 :(得分:2)

您必须添加选择器参数,否则直接绑定事件而不是委托,只有在元素已存在时才会起作用(因此它不适用于动态加载的内容)。

请参阅http://api.jquery.com/on/#direct-and-delegated-events

将您的代码更改为

$(document.body).on('click','#submit_question',function(){

答案 1 :(得分:1)

试试这个适合你:

$(document).on("click","#submit_question", function(){

//Do something here..

});

OR

$(document).bind("click","#submit_question", function(){

//Do something here..

});
相关问题