ローカルストレージとjqueryuiを使用するバックボーン/Railsアプリがあります。1つのRails3.2.8アプリケーションで開発し、動作させてから、サーバーで使用するアプリケーション(Rails 3.2.8も)にコードをコピーしましたが、サーバーにプッシュする前に、ローカルホスト。不思議なことに、サーバー宛てのRailsアプリでは機能しません。たった1つのjQueryuiメソッドが新しいアプリで問題を引き起こし、このエラーをスローします。
Object [object Object] has no method 'sortable'
以下のrender関数からソート可能なコードをコメントアウトすると、アプリは正常に動作しますjQueryのバージョンは両方のアプリでjQuery uiバージョン(1.9.2)と同じ(1.8)です(バックボーンのバージョンも同じです) )。両方のアプリのページソースを確認しましたが、ファイルは同じ順序で読み込まれています。元のアプリはChromeとFirefoxの両方で動作しますが、1つの工夫として、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