我有一个网站,用户可以使用jquery load
更改网页内容。在每个页面内容中,我都有一个表单,我使用jquery validation plugin
$("#form-create").validate({
submitHandler: function(form) {
var name = $("#name").val();
save(name);
return false;
}
});
我注意到所有jquery click
函数只有在我更改页面内容之后才能工作,但我用click
替换live "click"
来解决它。虽然上述验证会出现同样的问题。在我更改页面内容并click
解决问题之前,如何使用live "click"
有效?或者如何将验证插件与live "click"
一起使用,这将解决问题,但不向我解释:)
答案 0 :(得分:4)
实时点击解决问题的原因是元素最初并不存在于您的DOM上,因此使用“实时”意味着它是一个实时点击,无论是因为新元素到达DOM时它都会刷新。默认事件仅使用已加载的第一个DOM。
如果您想通过实时点击事件检查验证,那么您应该使用以下内容:
$('.submitButton').live("click", function() {
$("#form-create").validate({
submitHandler: function(form) {
var name = $("#name").val();
save(name);
return false;
}
});
});
希望这会有所帮助,因为你没有指定你正在使用哪个验证插件,这有点困难,但是,无论这个插件应该如何工作,假设您希望调用验证提交按钮点击事件。
答案 1 :(得分:0)
当您将一组元素(例如$("div.clickable")
)与事件绑定时,在执行$()函数时使用DOM解析该集合。所有后续元素(在那一刻之后出现)将不受约束,因为它们不属于原始集合
Live就是这样:它会在新元素出现时刷新原始集合,然后新元素在DOM中出现时绑定
答案 2 :(得分:0)
不幸的是,现场没有加载事件,虽然这已经有asked了很长一段时间。
你可以通过在ajax调用中放置一个回调函数来解决这个问题。这可以使用global ajax event handlers全局完成:
$('#contentDiv').ajaxComplete(function() {
$("#form-create").validate(validateOptions);
});