2012-01-29 115 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