4

これは、グリッド レイアウトとしてのデフォルトの jQueryUI 表示です (デモはこちら)。マウス ポインターを使用すると、一度に 1 つずつ選択できます。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 -->
4

3 に答える 3

8

このコードをオンラインで見つけました。それはあなたが求めているものですか?

Ctrlキーを押しながら複数選択

于 2012-08-18T16:53:21.440 に答える
2

正直なところ、Ctrl複数の項目を選択するための + 左クリックは、かなり標準的な UI 動作であり、jQueryUI Selectableに組み込まれています。また、左クリックしてフォーカスを複数のアイテムにドラッグして選択できることもご存知でしたか?

ただし、問題の動作を提供することには利点があることがわかります。左クリックまたはドラッグを使用して選択し、左クリックおよびドラッグして選択を解除するはどうですか?

これは最も効率的な方法ではないかもしれませんが、組み込みのコールバックをいじってみたところ、うまくいきそうな方法を思いつきました。あなたの質問のコードに基づいて、組み込みのコールバック関数にフックして、選択されたものを保存し、選択の削除も処理しました。JavaScript は以下に複製されていますが、デモはこちら.

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); 
    }
});
于 2012-08-18T20:54:18.657 に答える
1

http://jqueryui.com/demos/button/#checkbox 探しているもののように見えます

于 2012-08-18T17:09:22.013 に答える