使用jQuery取消选择所选区域

时间:2016-03-03 16:42:10

标签: javascript jquery html selectable

我有以下HTML:

<div class="folders block">
    <div class="ui-widget-content">            
         <table class="folders-list">
             <tbody class="folder">
                  <tr><td style="text-align: center">Папки: </td></tr>
                  <tr class="folder-name"><td><i class="fa fa-folder-open"></i><span>Всички</span></td></tr>          
             </tbody>
         </table>
    </div>
</div>

以下jQuery:

$(".folder").selectable({
    stop: function() {
        $(".ui-selected", this)
            .each(function() {
                var index = $("table tbody").index(this);   
            });     
    }
});

当我想取消选择所选项目时,一切都很好。我点击的地方什么都没发生。我找不到任何有用的东西。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,没有直接的方法可以做到这一点,但你可以使用技巧。

当用户点击容器外的某个地方(.folder)时,你应该做两件事:

  1. 删除所选项目的.ui-selected类。
  2. 清除窗口小部件实例的选定列表。
  3. 注意:这是一个通用的解决方案,所以它可能与您的其他代码(例如$('html').click)冲突,所以要小心。

    代码:

    $( "#selectable" ).selectable().click(function(event) {
      event.stopPropagation();
    });
    
    $('html').click(function(){
      var ins = $( "#selectable" ).selectable( "instance" );
      // clear the selected list
      ins.selectees = [];
      // remove the selected class
      ins.element.find('.ui-selected').removeClass('ui-selected');
    });
    #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; width: 60%; }
    #selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <ol id="selectable">
      <li class="ui-widget-content">Item 1</li>
      <li class="ui-widget-content">Item 2</li>
      <li class="ui-widget-content">Item 3</li>
      <li class="ui-widget-content">Item 4</li>
      <li class="ui-widget-content">Item 5</li>
      <li class="ui-widget-content">Item 6</li>
      <li class="ui-widget-content">Item 7</li>
    </ol>