Jquery NoConflict Problem

时间:2011-09-02 作者:SpyrosP

我正在创建wordpress主题,并使用一些使用jQuery的脚本。它工作得很好,直到我启用了一个名为“付费下载”的插件。

这实际上使所有jquery依赖项都不再工作。所以,我在想,也许我做错了什么。例如,我使用prettypoto并将其初始化为:

/* Pretty Photo */
    wp_register_style(\'pretty-photo-css\', LIBRARIES_URI . "prettyPhoto/css/prettyPhoto.css");
    wp_enqueue_style(\'pretty-photo-css\'); 
    wp_register_script(\'jquery-pretty-photo\', LIBRARIES_URI . "prettyPhoto/js/jquery.prettyPhoto.js");
    wp_enqueue_script(\'jquery-pretty-photo\', array(\'jquery-my\'));
jquery。Prettypoto。js是实际的prettypoto文件,我刚刚在该文件的末尾添加了以下几行,以触发prettypoto效果:

jQuery.noConflict()

jQuery(function(){
  jQuery("a[rel^=\'prettyPhoto\']").prettyPhoto();
});
JQuery的排队方式如下:

    wp_register_script(\'jquery-my\', "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
    wp_enqueue_script(\'jquery-my\');
正如我所提到的,在启用“付费下载”插件之前,这项功能就可以正常工作。我想知道。我做错什么了吗?启用插件后,我会在Chrome javascript控制台中遇到类似的错误:

Uncaught TypeError: Object [object Object] has no method \'prettyPhoto\'
因为插件添加jquery是为了自己的目的,所以似乎存在冲突?有什么想法吗?

2 个回复
最合适的回答,由SO网友:Mamaduka 整理而成

尝试调用方法“prettypoto”DOM就绪后,替换代码:

jQuery.noConflict()

jQuery(function(){
  jQuery("a[rel^=\'prettyPhoto\']").prettyPhoto();
});
使用此选项:

jQuery(document).ready(function($) {
    $("a[rel^=\'prettyPhoto\']").prettyPhoto();
});
此外,“付费下载”插件将WordPress使用的最新版本的jQuery排队1.6.1, 如果您从Google CDN注册与WordPress相同版本的jQuery,会更好

SO网友:Manimaran

我们可以这样使用。这有点不同。所以它是分开工作的。

var $jscript = jQuery.noConflict();
$jscript(document).ready(function(){
   $jscript("a[rel^=\'prettyPhoto\']").prettyPhoto();
});

结束