2011-08-29 40 views
1

當我使用jQuery(最新版本)開發應用程序時,我的Firefox瀏覽器決定將它自己更新到版本6.之後,我得到了標準的jQuery UI 「可排序」功能工作不正常。我嘗試了jQuery網站和同樣的事情。試用與jquery ui bundle =>下載的演示文件相同的結果。沒有黑客,沒有習慣,只有香草。jquery ui 1.8.16&firefox 6 - 排序不能正常工作

以下是症狀:開始排序(通過單擊並拖動鼠標),可排序的元素將粘貼到鼠標指針上。很好,直到那裏。但是,當釋放鼠標左鍵時,可排序元素將落在其最終位置,並且突然,當我將鼠標移動到其他位置時(沒有鼠標按鈕被點擊),最後一個排序的元素會粘貼回鼠標並隨指針一起移動。

單擊頁面上的某個位置會將可排序元素移回到最終放置的位置,但只要我再次移動鼠標,該元素將再次粘住而不會掉落。

有沒有人過來這樣一個與Firefox 6的錯誤?

FYI,這個排序的功能是工作就像一個魅力在FF 5.0

回答

1

好的傢伙!我發現了這種奇怪行爲的根源!它的名字是Firefox的「FireQuery 1.0」插件。

當我看到Guntram告訴我他正在使用FF6和最新版本的jQuery + jQuery-UI而沒有任何問題時,我想知道這是否可能來自插件。所以我禁用了一切,並在每次啓用後重新啓動它們,並重新啓動。我發現了有罪的插件:FireQuery 1.0。

不是說這個插件不好,但至少,如果你遇到與我一樣的問題,至少現在你可能知道根本原因。 ;)

0

給我的排序工作沒有問題。 元素不會意外移動。

當我有一個元素的項目,如按鈕或文本字段,什麼也沒有發生。 如果我右鍵單擊字段或按鈕光標出現(按鈕被點擊)。 當我逃離窗口右鍵單擊選項菜單我可以鍵入到文本字段...

所以仍然奇怪的行爲。我不知道它如何在ff5上工作,我在ff6上,最新的jQuery版本。

編輯:

後,我發現這一點: http://weblogs.asp.net/jeffwids/archive/2011/01/31/jquery-textbox-in-sortable-is-not-clickable-selectable.aspx 我把在用jQuery的排序提供取消選項一探究竟。

我終於可以解決這個問題是這樣的:

<ul id="sortable"> 
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><input type="text" value="text" ></input></li> 
    <li class="ui-state-default" style="height: 70px;"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><textarea cols="20" rows="3">textarea</textarea></li> 
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><button>button</button></li> 
</ul> 
<script> 
     // initialize the sortable including the cancel option 
     $("#sortable").sortable({cancel: 'input,button,textarea'}); 
</script> 
+0

非常感謝Guntram的回答!你實際上給了我另一個我也有過的問題的提示;) –

0

我有同樣的問題。經過一天的測試後,我發現問題是什麼以及什麼將這種行爲踢掉了。

讓我先告訴你我們正在使用可排序類。

----------- 
| Header | 
----------- 
|   | 
|Contents | 
----------- 

標題是可拖動的。如果您在快速移動鼠標光標並且鼠標光標以某種方式移出標題(例如移動到內容)時,光標將光標移動到

要將div重新釘回到頁面上,可以再次快速移動光標並嘗試將其重新放回頁眉上。然後看起來事件被重新連接,你可以把div放回到頁面上。

總結一下,鼠標移動div時會附帶可排序的事件,所以對象沒有看到mouseup或單擊將對象放回到頁面上的事件。

不幸的是,我不知道如何解決這個問題。

編輯

我們實現這爲我們工作的解決方案,但未必適用於每個人。當任何不應該拖動的元素上發生點擊事件時,只需在可拖動元素上使用.trigger("mouseup")。這會將可拖動元素捕捉到頁面上。