2012-01-29 112 views
2

好吧。比方說,我有以下片段:如何限制使用JQuery UI可選擇的可選元素?

<div id="container"> 
    <div class="content" >A</div> 
    <div class="content" >B</div> 
    <div class="content" >C</div> 
    <div class="content" >D</div> 
    <div class="content" >E</div> 
    <div class="content" >F</div> 
</div> 

現在,讓我們說,我已經完成:

$('.content').selectable({}); 

我的困境:

說,任何時候我拖着從而顯得套索工具,我只想要選擇4個div - 我可以在選擇4後繼續套索,但不應選擇套索懸停的後續div。所以說的div的外觀是由左到右,

ABCDEF

套索開始在A和I將其移動到正確的 - 在覆蓋d所以它遇到的4極限 - 當我將鼠標懸停在è和F,這些現在不應選擇。

回答

4

綁定到選擇事件並取消它,如果已經有4個選定的項目。

$("#selectable").selectable({ 
    selecting: function(event, ui) { 
    if ($(".ui-selected, .ui-selecting").length > 4) { 
     $('.ui-selecting').removeClass("ui-selecting"); 
    } 
    } 
}); 

編輯:更正代碼片段,因爲我只是走從iPad上刺。這裏有一個你想要的工作jsfiddle以及:http://jsfiddle.net/fordlover49/MRphL/

+0

我已經試過它,它不起作用。或者,現在我使用'$(this).mouseup();'而不是'return false;',但是,比如說,在調用'.mouseup()'之後,套索偏離了另外兩個div ,這樣的另外兩個div留下了類'ui-selection'類 – abrahamdsl 2012-01-30 04:18:58

+0

爲您更新了答案,而不是返回false,只需從選擇事件中正在選擇的項目中移除ui選擇類即可。 – PriorityMark 2012-01-30 19:08:52

+0

如果您執行'$(ui.selecting).siblings(「。ui-selected,.ui-selecting」)'',您可以有多組具有單獨限制的可選元素。 – chad 2014-05-07 06:09:11