Javascript MailChimp jQuery冲突

Javascript MailChimp jQuery冲突,javascript,debugging,conflict,mailchimp,Javascript,Debugging,Conflict,Mailchimp,将MailChimp集成到我正在设计的网站中,我经历了最糟糕的一段时间 问题是,对于嵌入式订阅表单,验证不起作用。表单不是内联错误消息,而是将用户踢到MailChimp注册页面以更正错误或确认列表选择加入 我已经对代码进行了大量定制,因此很遗憾,返回默认值不是一个选项 下面是我得到的错误,但我是JS n00b,所以我不知道它们是什么意思: 未定义中断错误mce_jQuery: 我不认为这是一个错误,可以抓住与控制台虽然 奇怪的是这个。如果我删除自定义代码,只发布MailChimp中的静态代码,

将MailChimp集成到我正在设计的网站中,我经历了最糟糕的一段时间

问题是,对于嵌入式订阅表单,验证不起作用。表单不是内联错误消息,而是将用户踢到MailChimp注册页面以更正错误或确认列表选择加入

我已经对代码进行了大量定制,因此很遗憾,返回默认值不是一个选项

下面是我得到的错误,但我是JS n00b,所以我不知道它们是什么意思:

未定义中断错误mce_jQuery:

我不认为这是一个错误,可以抓住与控制台虽然

奇怪的是这个。如果我删除自定义代码,只发布MailChimp中的静态代码,它会以某种方式工作,但我复制了所有具有重要功能的相关代码,仍然没有骰子

您可以在以下位置实时查看网站:


MailChimp列表注册在右上角的滑动下拉列表中。相关的脚本就在div#top_邮寄之后嵌入。

尝试将此代码移到顶部的右侧(如紧跟在
标记之后):


jQuery.noConflict();

亚历克·斯马特的回答几乎是正确的。通过在NoConflict模式下运行jQuery,问题得到了解决。Alec建议我添加jQuery.noConflict();在文档的标题中。结果是MailChimp嵌入代码中有一行被注释掉了。为了正确启用MailChimp脚本的noConflict模式,请搜索

 //var mce_jQuery = jQuery.noConflict();
删除注释,使其看起来像这样

 var mce_jQuery = jQuery.noConflict();

然后你就可以走了!:)

或者您只需在mailChimp.js中重命名此变量即可:

var mce_jQuery = jQuery.noConflict();


不知道为什么MailChimp开发人员决定用一种方法重写美元符号。

使用jquery 1.8.1和截至2013年5月28日的最新MailChimp代码

我找不到上面的注释来取消注释

然而,我可以看到这个mailchimp代码:

function mce_init_form(){
jQuery(document).ready( function($) {
我对这方面的理解不是很好,但这会重新分配默认的jquery$变量

但是,在代码的后面部分有:

function mce_success_cb(resp){
$('#mce-success-response').hide()
这让mailchimp的代码出错了

我把它改成了

function mce_success_cb(resp){
jQuery(document).ready( function($) {
$('#mce-success-response').hide();

它是有效的。不太清楚原因(并且希望得到解释!),但我想我会发帖,因为有人可能会以与我相同的方式遇到这个问题。

我对上述任何解决方案都不感兴趣,可能是因为最后一个答案已经有一年多的历史了,不再反映当前的mailchimp代码

为了解决jQuery冲突,我复制了MailChimp提供服务的
mc validate.js
脚本,并将其放在我们自己的服务器上。然后我美化了它,并从文件中删除了jquery代码。这样,现在服务器上只剩下我们的jquery版本,不再有任何冲突

看起来,您也不需要行
var$mcj=jQuery.noConflict(true)不再


@mailchimp:这个问题的一个很好的解决方案是,如果您可以在您的amazon服务器上提供不同版本的代码,其中不包括jquery。

很好的尝试,但不,移动后,它仍然不会进行内联验证:(您正在代码中加载两个版本的jQuery。确实要这样做吗?您几乎是正确的Alec!请参阅下面的答案以了解解决方案:)太好了!很高兴这有帮助您在新行
jQuery(文档)中添加了一个右括号。就绪(函数($){
?如果是,在哪里?抱歉,已经有一段时间了!我想结束括号一定是在所有与#mce成功响应相关的代码之后出现的。如果没有帮助,请告诉我,我会查找它(我需要找出这是哪个项目!!)
function mce_success_cb(resp){
$('#mce-success-response').hide()
function mce_success_cb(resp){
jQuery(document).ready( function($) {
$('#mce-success-response').hide();