我有一个使用本地存储和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中工作(而另一个则没有)表明任何可能的问题领域,你可以指示我...预先感谢
渲染功能可排序的地方位于真实
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
“var that = this;”大声笑... –
@ChristopherMarshall:这是[一个很常见的事情](http://stackoverflow.com/questions/4886632/what-does-var-that-this-mean-in-javascript)。 –
@ChrisopherMarshall我不写下所有这些代码,所以我不能评论是否需要保存对此的引用,但它是JavaScript中的一种约定,在var'this'失败的情况下 – BrainLikeADullPencil