我正在使用jquery galleryview插件,我添加了在点击链接(显示表单)时暂停幻灯片显示的功能,然后在单击关闭按钮时重新启动。
这样可以正常工作(见下文),但我还希望在提交表单时启动幻灯片。我可以通过将提交按钮添加到重新启动幻灯片的元素列表来实现,但如果表单没有通过验证,我不希望幻灯片重新启动。
这是我的galleryview代码(浓缩):
(function($){
$.fn.galleryView = function(options) {
// Some code
return this.each(function() {
// Some more code
$("#closeEnquiry").click(function(){
restartGallery();
});
function restartGallery(e) {
// Code to restart gallery
}
}
}
}
这是我的表单提交/验证代码(restartGallery函数不运行):
$(document).ready(function(){
$("#enquiryForm").validate({
debug: false,
rules: {
YourName: {
required: true,
},
YourEmail: {
required: true,
email: true,
},
},
messages: {
YourName: "Please let us know who you are.",
YourEmail: "A valid email will help us get in touch with you."
},
submitHandler: function(form) {
$.post('projectform.php', $("#enquiryForm").serialize(), function(data) {
closePopup();
$('#enquiryFormContainer').prepend(data);
restartGallery(); // This does not run...
});
}
});
});
我是如何从validate函数运行restartGallery函数的?
答案 0 :(得分:0)
在通过AJAX更改DOM后,JQuery对象变得无效(处置)后,我遇到了类似的问题。
因此,我的猜测是,在执行$('#enquiryFormContainer').prepend(data)
之后,restartGallery()
引用的某些DOM对象(及其事件处理程序)将变为无效。例如,如果restartGallery()
引用了一个初始化的变量,如下所示:var myDiv = $("#myDiv")
,则需要在AJAX调用完成后重新初始化它。