javascript - jQuery UI 可选择小部件通过鼠标拖动多次取消选择

标签 javascript jquery jquery-ui jquery-ui-selectable

我正在使用 jQuery UI 可选择小部件。我在 Is there a way to change event parameters in jQuery? 看到了解决方案启用多重选择(用鼠标拖动),效果很好。现在我试图获得类似的功能来取消选择多个元素,但这不起作用。

$('#selectlist').on("mousedown", function (e) {
    e.metaKey = true; //multiple select true
    //e.ctrlKey = true;
}).selectable({
    filter: '.select-li',
    selecting: function (event, ui) {
        debugger;
        //if ($(ui.selecting).hasClass('li-planned')) {
        //    $(ui.selecting).removeClass("ui-selecting");
        //}
    },
    unselecting: function (event, ui) {
        //if ($(ui.unselecting).hasClass('li-planned')) {
        //    $(ui.unselecting).removeClass("ui-unselecting").addClass('ui-selected');
        //}
    },
    stop: function (event) {
        //debugger;
        //do some work here
    }
})

我尝试了多种选择来实现,但到目前为止我还无法实现。任何帮助将不胜感激。

最佳答案

$(function() {
  $("#selectable").bind("mousedown", function(e) {
    e.metaKey = true;
  }).selectable();
  $("#selectable").selectable({
    selected: function(event, ui) {
      if (!$(ui.selected).hasClass('selected-flag')) {
        $(ui.selected).addClass('selected-flag');
      } else {
        $(ui.selected).removeClass("ui-selected selected-flag");
      }
    }
  });
});
#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;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/base/jquery-ui.css" type="text/css" media="all">
<script src="https://code.jquery.com/ui/1.8.5/jquery-ui.min.js"></script>

<div class="demo">
  <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>
  </ol>

</div>

我创建了一个解决方案 here并在我的答案中添加了片段。在这里,我向 select 事件上的元素添加了一个标志类,以识别稍后选择了哪些项目,然后删除 ui-selected并标记它们的类,然后使其取消选择。我想这就是您正在寻找的。

关于javascript - jQuery UI 可选择小部件通过鼠标拖动多次取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41372474/

相关文章:

jquery - 我可以使图像随着内容 div 扩展而不会扭曲吗

javascript - Onclick 函数更改为所有更改元素的相同函数

javascript - 用 jquery confirm 替换 javascript confirm

javascript - 单击图像上的工具提示

javascript - ES6 Promise 序列, token 的 XHR,然后再次 XHR

javascript - Firefox 中的滚动错误

javascript - 如何在javascript中组合两个对象?

javascript - 此上下文中的异常 : Cannot call SpreadsheetApp. getUi()

javascript - jquery scroll() 和 on(mousemove) 搞砸了

jquery - 将内联 jQuery UI Datepicker 聚焦为键盘快捷键?