我有一个模式,允许用户将问题发布到我的网站。通过调用以下函数的按钮完成问题的发布 - 这将问题提交给数据库,但如果输入字段为空,则发送错误。在这两种情况下,都会重新加载模态,如果设置了错误,它将显示在模态上。问题是这个.....我需要重新发布使用重新加载的模态,但是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;
});
答案 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..
});