Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails—jQuery和javascript之间的冲突_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Rails—jQuery和javascript之间的冲突

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

我在将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
//= 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()
});