为了进行onclick事件和表单发布事件,我必须加载2个jquery。 onclick事件可以通过调用http code.jquery.com/jquery-latest.min.js来正常工作,但是除非我调用http code.jquery.com/jquery-1.4.2.min.js和{{{i},否则post事件将无效。但是我必须使用noConflict才能让事情发挥作用。
对latest.min的调用使我的onclick事件加载到div中 对submitHandler:function(form)的调用是我的表单帖子,它加载到另一个div。
菜单由onClick事件操作,并将正确的菜单加载到顶部栏中。然后,用户从该菜单的下拉列表中选择将表单加载到下面的另一个div中。
表单已发布,并在表单所在的div中显示结果并重新加载表单。
加载到div中的表单也包含表单的代码。
问题是它曾经工作过一次,如果你试图发布再次加载的相同表单(与第一个相同,包括发布表单的代码)它无法发布
用于发布表单的脚本
$.noConflict();
$(document).ready(function () {
$("#ncus").validate({
debug: false,
submitHandler: function (form) {
$.post('../AddCusForm/process_form.php', $("#ncus").serialize(), function (data) {
$('#mainBody').html(data);
$("#mainBody").find("script").each(function (i) {
eval($(this).text());
});
$("form#ncus")[0].reset();
});
}
});
});
正在加载到同一div中的进程表单具有与上面相同的代码。并用另一种形式(同名)替换原始表格
答案 0 :(得分:2)
每次调用$
时,您的代码都会发布$.noConflict
变量。第一次,它将一个版本的jQuery恢复为你;第二次,它可能使$
未定义。
理想情况下,您想要做的只是使用单个版本的jQuery。
有时因各种原因在短期内无法实现。对于那些情况:
在页面上使用多个jQuery版本的正确方法是使用noConflict
的返回值和/或作用域函数。
这是返回值示例:
<script src="jquery-vX.js"></script>
<script src="some-plugin-that-requires-vX.js"></script><!-- (if any) -->
<script>
var $X = jQuery.noConflict(true);
</script>
<script src="jquery-vY.js"></script>
<script src="some-plugin-that-requires-vY.js"></script><!-- (if any) -->
<script>
var $Y = jQuery.noConflict(true);
</script>
然后对jQuery版本X使用$X
,对jQuery版本Y使用$Y
。请注意,您加载的插件将自己挂钩到当前版本的jQuery。
请注意以上事项的顺序:
noConflict
(一次)。顺序很重要,因为正确编写的插件会使用jQuery
符号自行挂钩,因此您需要确保jQuery
在加载时指向正确的版本插件。
您还可以使用作用域功能,以便在该函数中使用$
的给定版本:
(function($) {
// Here, $ will be whatever you pass in below, in this example, version X
$(...).doSomethingWithVersionX();
})($X);
(function($) {
// Here, $ will be whatever you pass in below, in this example, version Y
$(...).doSomethingWithVersionY();
})($Y);
如果您不喜欢版本埋在底部的方式,那么也可以这样做:
(function() {
var $ = $X; // <== Note, jQuery version X
// Here, $ will be whatever you assigned above
$(...).doSomethingWithVersionX();
})();
(function() {
var $ = $Y; // <== Note, jQuery version Y
// Here, $ will be whatever you assigned above
$(...).doSomethingWithVersionY();
})();