为了一个onclick事件和一个表单post事件,我必须加载两个版本的jquery。onclick事件可以很好地调用http code.jquery.com/jquery-latest.min.js,但是post事件不会工作,除非我调用http code.jquery.com/jquery-1.4.2.min.js和http://code.jquery.com/ajax/jquery.validate/1.7/jquery.validate.min.js,但我必须使用noConflict才能让事情正常工作。
对latest.min的调用将我的onclick事件加载到一个div中,对submitHandler的调用(表单)将我的表单post加载到另一个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中的进程表单具有与上面相同的代码。并将原始表单替换为另一个表单(同名)
发布于 2013-09-06 23:37:05
每次调用$.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上。
注意上面的顺序:
version.
noConflict (Once)文件。顺序很重要,因为正确编写的插件将使用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();
})();https://stackoverflow.com/questions/18661398
复制相似问题