存在這樣產生了無效的jQuery選擇方法makeSortable
的錯誤。
這裏是(I已經刪除了不相關的代碼)的製造方法:通過檢查窗口小部件的movable
的選項並返回的過濾列表中獲得的$sortableItems
makeSortable : function() {
var iNettuts = this,
...
$sortableItems = (function() {
var notSortable = '';
$(settings.widgetSelector,$(settings.columns)).each(function (i) {
if (!iNettuts.getWidgetSettings(this.id).movable) {
if(!this.id) {
this.id = 'widget-no-id-' + i;
}
notSortable += '#' + this.id + ',';
}
});
// when "notSortable" is empty, the selector
// is "> li:not()" which is invalid
return $('> li:not(' + notSortable + ')', settings.columns);
})();
...
}
(帶有自動執行功能)使用:not()
僞選擇器。
問題是,當所有的小部件都是可移動的,變量notSortable
將是空的,這將產生一個無效的jQuery選擇器> li:not()
。
當您刪除天氣小工具的特定設置時發生這種情況。天氣有movable: false
。如果刪除設置,所有小部件都將可移動,併發生錯誤。
更改return語句只使用:not()
時notSortable
不爲空:
return $('> li' + (notSortable && notSortable !== '' ? ':not(' + notSortable + ')' : ''), settings.columns);
DEMO
驚人。我花了很多時間來解決這個問題。謝謝你幫助我的時間。 – Crashdesk 2012-02-06 19:24:44
很高興幫助!那麼,在瀏覽器的控制檯實際上是一個巨大的紅色錯誤消息,在方法開始的斷點,這是它;-) – 2012-02-06 19:57:30