我有一个使用本地存储和 jquery ui 的骨干网/rails 应用程序。我在一个 Rails 3.2.8 应用程序上开发它,让它工作,然后将代码复制到我在服务器上使用的应用程序(也是 Rails 3.2.8),但在我将它推送到服务器之前,我测试了它本地主机。奇怪的是,它不适用于发往服务器的 Rails 应用程序。只有一个 jQuery ui 方法导致我在新应用程序上出现问题,引发此错误。
Object [object Object] has no method 'sortable'
当我从下面的渲染函数中注释掉可排序代码时,应用程序运行良好两个应用程序中的 jQuery 版本相同(1.8)与 jQuery ui 版本(1.9.2)相同(主干版本也相同)。我检查了这两个应用程序的页面源,并且文件以相同的顺序加载。虽然原始应用程序适用于 Chrome 和 Firefox,但一个转折是我在 Safari 中的两个应用程序上都遇到了相同的错误。我清除了每个浏览器中的缓存。代码包含在这个$(function(){ });
$(function() {
...ommitted code...
window.App = new AppView();
});
但是,我也尝试在应用程序视图的初始化周围放置文档就绪代码,但它没有改变任何东西
$(document).ready(function() {
window.App = new AppView();
});
鉴于上述情况(以及下面的代码),两者都不能在 Safari 中正常工作,但原始应用程序在 Chrome 和 Firefox 中工作(而另一个不能)这一事实是否表明您可以指导我到任何可能的问题区域......先感谢您
sortable 所在的渲染函数
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
this.setText();
var that = this;
console.log(this.$("ul.bucket-companies"));
this.$("ul.bucket-companies").sortable({
dropOnEmpty: true,
connectWith: "ul.bucket-companies",
receive: function(event, ui) {
var bucket = that.model;
var id = $(ui.item[0]).attr("id");
var company = Companies.get(id);
var oldBucket = company.getBucket();
company.setBucket(bucket.id);
oldBucket.removeCompany(company.id);
bucket.addCompany(company.id);
}
});
return this;
},
更新。
这是渲染函数中的 console.log 显示的console.log(this.$("ul.bucket-companies"));
[ul.bucket-companies, prevObject: i.fn.i.init[1], context: li.bucket-item, selector: "ul.bucket-companies", constructor: function, init: function…]
0: ul.bucket-companies
context: li.bucket-item
length: 1
prevObject: i.fn.i.init[1]
selector: "ul.bucket-companies"
__proto__: Object[0]
feng.js:87