Rails—jQuery和javascript之间的冲突
我在将gems加载到Rails 4应用程序时遇到问题 我使用jQuery。在我的application.js中,我有:Rails—jQuery和javascript之间的冲突,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我在将gems加载到Rails 4应用程序时遇到问题 我使用jQuery。在我的application.js中,我有: //= require jquery //= require bootstrap-sprockets //= require jquery_ujs //= require html.sortable //= require disqus_rails //= require moment //= require bootstrap-datetimepicker //= requi
//= require jquery
//= require bootstrap-sprockets
//= require jquery_ujs
//= require html.sortable
//= require disqus_rails
//= require moment
//= require bootstrap-datetimepicker
//= require pickers
//= require main
//= require hammer.min
//= require jquery.animate-enhanced.min
//= require jquery.countTo
//= require jquery.easing.1.3
//= require jquery.fitvids
//= require jquery.magnific-popup.min
//= require jquery.parallax-1.1.3
//= require jquery.properload
//= require jquery.shuffle.modernizr.min
//= require jquery.sudoSlider.min
//= require jquery.superslides.min
//= require masonry.pkgd.min
//= require rotaterator
//= require smoothscrolljs
//= require waypoints.min
//= require wow.min
//= require gmaps/google
//= require chosen-jquery
//= require cocoon
//= require imagesloaded.pkgd.min
//= require isotope.pkgd.min
//= require jquery.counterup.min
//= require jquery.pjax
//= require custom.js
//= require slider
//= require dependent-fields
//= require bootstrap-slider
$.noConflict();
jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.
$(document).ready(function() {
DependentFields.bind()
});
});
//= require_tree .
在我的gem文件中,我试图使用rails依赖的gem字段。该gem还需要underline.js
我认为这个gem不起作用的原因是它使用javascript
我在disqs rails gem上也遇到了同样的问题(这会引发localhost/:94 uncaughttypeerror:$不是函数的错误)
有人知道如何解决rails jQuery和javascript之间的冲突吗?尝试包装javascript代码,在其中使用$variable和匿名函数:
(function($){
// put your code here
})(jQuery);
问题是,您通过以下行将jQuery设置为在
noConflict
模式下工作:$.noConflict();
。jQuery不会全局定义$
变量,只能通过jQuery
变量使用
$.noConflict(); // <===== HERE ======
jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.
$(document).ready(function() {
DependentFields.bind()
});
});
此外,您在代码中使用了2个文档就绪事件。您可以将其改进为:
$.noConflict();
jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.
DependentFields.bind()
});
我明白了。您需要使用第一个选项并删除
$.noConflict();
行。否则,在GitHub上找到gem并创建一个具有改进的拉取请求。我不明白。我是否要将gem包装在gem文件中,并使用您建议的代码作为选项1?不,忘记一切,只需从应用程序.js
:$.noConflict()中删除这一行即可;
。从您提供的内容来看,没有冲突。错误消息为未捕获类型错误:$不是函数
,这意味着未定义名为$
的函数。如果删除行$。noConflict()
从您的应用程序.js文件中,它将创建一个具有该名称的函数。但这只是我的app/assets/javascripts文件夹中的.js文件之一。当我尝试在我的underline.js文件中使用该文件时,我仍然无法使依赖字段rails部分正常工作。
$.noConflict();
jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.
DependentFields.bind()
});