MailChimp jQuery Conflict

时间:2010-08-22 08:41:03

标签: javascript debugging conflict mailchimp

我一直在将MailChimp整合到我正在设计的网站中的时间最长!

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

我已经对代码进行了大量的自定义,所以不幸的是,回到默认值不是一个选项。

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

中断错误mce_jQuery未定义:

Screen shot 2010-08-22 at 4.34.50 AM.jpg

我不认为这是一个可以通过控制台捕获的错误。

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

您可以通过以下网址查看该网站:http://ranya.net/wp/contact

MailChimp列表注册位于右上角滑动下拉列表中。相关脚本嵌入在div#top_mailing之后。

5 个答案:

答案 0 :(得分:4)

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

var mce_jQuery = jQuery.noConflict();

var mce_jQuery = jQuery;

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

答案 1 :(得分:2)

使用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();

它有效。不太清楚为什么(并且会喜欢解释!)但我认为我会发布,因为有人可能会像我一样遇到这个问题。

答案 2 :(得分:2)

我对上述任何解决方案都没有运气,可能是因为最后一个答案已经超过一年了,并且不再反映当前的mailchimp代码。

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

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

@mailchimp:如果您只是在亚马逊服务器上提供不同版本的代码,那么这个问题的一个很好的解决方案是,它不包含jquery。

答案 3 :(得分:1)

尝试将此代码移到顶部(例如,紧跟在<head>标记之后):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>jQuery.noConflict();</script>
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.validate.js"></script>
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.form.js"></script>

答案 4 :(得分:1)

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

 //var mce_jQuery = jQuery.noConflict();

删除评论,使其看起来像这样

 var mce_jQuery = jQuery.noConflict();

然后你应该好好去! :)