jQuery和Easing Conflict - jQuery和jQuery UI加载问题,但我无法找到它

时间:2013-08-25 07:10:31

标签: javascript jquery wordpress

好的,通常在出现jQuery冲突时会出现此错误。当加载两个jQuery实例或者在jQuery之前加载jQuery UI时,这是很常见的。但在我的网站上,所有jQuery加载似乎都没问题。我不知道问题是什么,我不知道下一步该转向何处。有没有人有任何想法?

TypeError:x.easing [this.easing]不是函数|在jquery.min.js

在此网页上:http://a1.nbksite.com/

请考虑。

1 个答案:

答案 0 :(得分:0)

@ Arun感谢您的帮助。我没有意识到核心是自定义构建的,我错误地认为WP版本的jQuery UI核心包含了效果。

在您指出问题后找到此相关主题:How to correctly include jquery-ui effects on wordpress

所以这是我最初在functions.php中使用的快速修复:

wp_deregister_script('jquery-ui');
wp_enqueue_script( 'jquery-ui', '//code.jquery.com/ui/1.10.3/jquery-ui.js', array(), '1.0', true );

但上面的代码被认为是“黑客”。根据WordPress文档,正确的做法是包括每个单独的库,因为它们与WordPress打包在一起 http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress

所以你应该这样做:

wp_enqueue_script("jquery-effects-core");
wp_enqueue_script("jquery-effects-bounce");

我测试了它,只要先前调用过wp_enqueue_script(“jquery-ui”),它就可以正常工作。然后他们希望你也分别将每个单独的图书馆排队!

坦率地说,我认为这是令人震惊的。在大多数情况下,WordPress是优雅的,但有时它的表面平坦。为什么在世界上你会想要通过使用一堆独立的库来吸收服务器资源并减慢加载速度。我无法相信WP团队认为这是一个好主意。我认为最好的办法是:

在WP和各种插件加载的所有单个愚蠢脚本上调用wp_deregister_script,以阻止它们被加载。

然后在自定义构建的jquery-ui核心文件上调用wp_enqueue_script,该文件包含您想要使用的内容 - 在本例中为包含效果库的ui核心。快速解决方法是继续从jquery.com CDN加载jquery-ui.js。无论如何,对我来说,WordPress认为加载大量独立的库是合乎逻辑的。

删除由WP插件加载的大量单个库并使用自定义jQuery UI替换它们的最终代码。大大减少资源并提高页面加载速度:

wp_deregister_script('jquery');
wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', array(), '1.0', false );

wp_deregister_script('jquery-ui-core');
wp_deregister_script('jquery-ui-widget');
wp_deregister_script('jquery-ui-mouse');
wp_deregister_script('jquery-ui-accordion');
wp_deregister_script('jquery-ui-tabs');
wp_deregister_script('jquery-ui-resizable');
wp_deregister_script('jquery-ui-button');
wp_deregister_script('jquery-ui-draggable');
wp_deregister_script('jquery-ui-position');
wp_deregister_script('jquery-ui-dialog');
wp_deregister_script('jquery-ui-sortable');

wp_enqueue_script( 'jquery-ui', '//code.jquery.com/ui/1.10.3/jquery-ui.js', array(), '1.0', false );