select2 Uncaught TypeError:无法读取undefined的属性'fn'

时间:2015-03-22 21:39:35

标签: jquery jquery-select2

我在select2脚本上遇到了这个错误。

完整堆栈跟踪显示:

Uncaught TypeError: Cannot read property 'fn' of undefined
select2.full.js?ver=4.1:5830 
(anonymous function) select2.full.js?ver=4.1:17 
S2 select2.full.js?ver=4.1:19 
(anonymous function) select2.full.js?ver=4.1:19 (anonymous function)

我认为它必须与在noconflict模式下加载的jQuery(它是一个Wordpress网站)有关,但我无法弄清楚是什么问题。

第17-19行是:

factory(jQuery);
  }
}(function (jQuery) {

怎么了?使用select2 4.0 RC2。

我必须补充说一切都按预期工作 - 但是控制台上的堆栈跟踪并不好......

3 个答案:

答案 0 :(得分:2)

好的,即使没有答案,有时在这里发帖也有帮助:)

在noconflict-safe包装器中包装第5830行$.fn.select2.amd = S2;,如下所示:

jQuery(function($) {
    $.fn.select2.amd = S2;
});

并且错误消失了。我认为必须/将在4.0最终版本中进行更改?!

答案 1 :(得分:2)

作者几天前修复了此错误( Fix TypeError )。在Github上查看此提交:https://github.com/select2/select2/commit/1f62eb67e89b5b72e9aa91586c5c22d76ffc7ed9

顺便说一下,正确的代码应该是:

jQuery.fn.select2.amd = S2;

答案 2 :(得分:0)

我遇到了同样的错误,并在wordpress中修复了它。之前加载的Jquery库是bootstrap-modal.js lib。 如果您使用以下方法添加脚本:

add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style', 5 );
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_script('popup' , get_template_directory_uri() . '/js/bootstrap-modal.js', array(), null );

如果使用相同的方法,请将加载优先级从5更改为例如90.