如何使用鼠标单击选择多个项目?

时间:2012-08-18 16:18:33

标签: javascript jquery css jquery-ui

这是默认的jQueryUI显示为网格布局(demo here)。我可以在使用鼠标指针时一次选择一个。我必须使用 Ctrl 进行多项选择。如何仅使用鼠标指针一次编辑多个选择的代码?

CSS

<style>
    #feedback { font-size: 1.4em; }
    #selectable .ui-selecting { background: #FECA40; }
    #selectable .ui-selected { background: #F39814; color: white; }
    #selectable { list-style-type: none; margin: 0; padding: 0; }
    #selectable li { margin: 3px; padding: 1px; float: left; width: 100px; height: 80px; font-size: 4em; text-align: center; }
</style>

的JavaScript

<script>
    $(function() {
        $( "#selectable" ).selectable();
    });
</script>     

HTML

 <div class="demo"> 
   <ol id="selectable">
     <li class="ui-state-default">1</li>
     <li class="ui-state-default">2</li>
     <li class="ui-state-default">3</li>
     <li class="ui-state-default">4</li>
     <li class="ui-state-default">5</li>
     <li class="ui-state-default">6</li>
     <li class="ui-state-default">7</li>
     <li class="ui-state-default">8</li>
     <li class="ui-state-default">9</li>
     <li class="ui-state-default">10</li>
     <li class="ui-state-default">11</li>
     <li class="ui-state-default">12</li>
   </ol>
 </div><!-- End demo -->

 <div class="demo-description">
   <p>To arrange selectable items as a grid, give them identical dimensions and float them using CSS.</p>
 </div><!-- End demo-description -->

3 个答案:

答案 0 :(得分:8)

在线发现此代码。那是你要的吗?

Multiple Select With Ctrl

答案 1 :(得分:2)

老实说,用于选择多个项目的 Ctrl +左键单击是非常标准的UI行为,并且内置于jQueryUI Selectable。您是否也知道可以左键单击并将焦点拖到多个项目上以选择它们?

但是,我可以看到提供相关行为的优势,那么如何使用左键单击或拖动来选择然后左键单击并拖动以取消选择

这可能不是最有效的方式,但在玩完内置回调后,我想出了一些似乎有用的东西。根据您问题中的代码,我已经连接到内置的回调函数来存储所选内容并处理选择删除。 JavaScript重复,但demo here

的JavaScript

var $currentlySelected = null;
var selected = [];

$('#selectable').selectable({
    start: function(event, ui) {
        $currentlySelected = $('#selectable .ui-selected');
    },
    stop: function(event, ui) {
        for (var i = 0; i < selected.length; i++) {
            if ($.inArray(selected[i], $currentlySelected) >= 0) {
              $(selected[i]).removeClass('ui-selected');
            }
        }
        selected = [];
    },
    selecting: function(event, ui) {
        $currentlySelected.addClass('ui-selected'); // re-apply ui-selected class to currently selected items
    },
    selected: function(event, ui) {
        selected.push(ui.selected); 
    }
});

答案 2 :(得分:1)

http://jqueryui.com/demos/button/#checkbox 看起来像你要找的东西