我在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。
我必须补充说一切都按预期工作 - 但是控制台上的堆栈跟踪并不好......
答案 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.