Rails 【已解决】在rails里用jquery的插件的bug

tony612 · 发布于 2012年9月28日 · 最后由 Tony612 回复于 2012年9月29日 · 2229 次阅读
1232

用到了一个幻灯片的插件easySlider, 这里有demo

单独的一个demo文件是没问题的,不过在rails(3.2.8)里,就怎么都显示不出来 easySlider.js加载没有问题。 在Chrome的console里看$.fneasySlider.js加载的时候有easySlider这个函数,不过到了pages.js.coffee里,像这样

$(document).ready ->
  $("#slider").easySlider({
    auto: true,
    continuous: true,
    numeric: true
  })

调试的时候看到,在ready()的时候$.fn还有easySlider,不过在ready里边的时候,也就是$("#slider").easySlider({这行的时候就没了,于是就有Object has no method 'easySlider'

觉得很奇怪。。 刚在stackoverflow里发帖问,不过每人回应,就跑到这里了,恳求帮忙~~

共收到 9 条回复
353

$("#slider")找的到元素吗?

1232

#1楼 @cantin 嗯可以的 没有问题 关键是不知道为什么连$.fn都没easySlider

353

试一下不使用coffee,另外coffee的hash写法可以更简便一些,你可以看一下。 如果还有问题,可能是加载顺序,检查一下页面上js的加载顺序。

273

调整加载顺序,先加载easySlider,后加载你写的文件,另外Rails没有3.8.2版本。

1232

#4楼 @ruby_sky 哦 打错了是 3.2.8

1232

#3楼 @cantin 嗯 刚刚改成js方便调试,这样

$(document).ready(function(){

  $("#slider").easySlider({
    auto: true,
    continuous: true,
    numeric: true
    });
}
);

然后调试的时候发现,在最后一行);的时候,$.fn.easySlider还是正常的,下一步就跳到了$("#slider").easySlider({这行,然后$.fn.easySlider就变成undefined了。。 奇怪了。。 感觉像是javascript的问题

353

自己写的单独的demo可以成功吗?我看它demo上的jquery是1.2.3的。。。。

1232

#7楼 @cantin 嗯 可以的 开始我也以为是jquery版本问题,不过写了个demo,用1.8.1的jquery版本,虽然没写css,不过js还是没问题的,调试的时候发现rails项目里的那个一到$("#slider").easySlider({的时候,$就会变成$: function (e,t){return new v.fn.init(e,t,n)}$("#slider")变成$("#slider"): v.fn.v.init[1],demo的还是不变的:$$: function ( selector, context ) {$("#slider")还是$("#slider"): jQuery.fn.jQuery.init[1]

1232

#7楼 @cantin 嗯 好了 解决了 应该是application.js问题,之前部署的时候预编译过 所以有了冲突 然后把public/assets里的删了就好了 不过还是谢谢啦~~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册