Javascript jQuery UI可选小部件使用鼠标拖动多次取消选择

Javascript jQuery UI可选小部件使用鼠标拖动多次取消选择,javascript,jquery,jquery-ui,jquery-ui-selectable,Javascript,Jquery,Jquery Ui,Jquery Ui Selectable,我正在使用jQueryUI可选小部件。我在上看到了一个解决方案,可以启用多个选择(使用鼠标拖动),效果很好。现在我正在尝试使用类似的功能来取消选择多个不起作用的元素 $('#selectlist').on("mousedown", function (e) { e.metaKey = true; //multiple select true //e.ctrlKey = true; }).selectable({ filter: '.select-li', sele

我正在使用jQueryUI可选小部件。我在上看到了一个解决方案,可以启用多个选择(使用鼠标拖动),效果很好。现在我正在尝试使用类似的功能来取消选择多个不起作用的元素

$('#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
    }
})

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

您只需通过

 $( "#selectlist" ).selectable();
您可以在可选择项上进行多项选择,而无需按下鼠标

  • 鼠标拖动
  • 按住Ctrl键同时选择
  • 取消选择多个(基于以上选择)

    1.a。选择一个,所有其他的将取消选择
    1.b。在列表中选择一个空白区域(列表1和列表2之间的空格),所有区域都将取消选择
    2.在取消选择的同时按Ctrl键

    请参见jQuery ui的演示

    $(函数(){
    $(“#可选”).bind(“鼠标向下”,函数(e){
    e、 metaKey=true;
    }).可选();
    $(“#可选”)。可选({
    所选:功能(事件、用户界面){
    if(!$(ui.selected).hasClass('selected-flag')){
    $(ui.selected).addClass('selected-flag');
    }否则{
    $(ui.selected).removeClass(“ui selected标志”);
    }
    }
    });
    });
    
    #反馈{
    字号:1.4em;
    }
    #可选。用户界面选择{
    背景#FECA40;
    }
    #可选择。用户界面已选择{
    背景:#F39814;
    颜色:白色;
    }
    #可选的{
    列表样式类型:无;
    保证金:0;
    填充:0;
    宽度:60%;
    }
    #可选锂{
    保证金:3倍;
    填充:0.4em;
    字号:1.4em;
    高度:18px;
    }
    
    第1项
    第2项
    第3项
    第4项
    第5项
    第6项
    
    我想阿米努尔是根据给出的信息回答了你的问题的。在阅读他回答下的反馈之前,我可能以为你是在追求这个目标

    这是另一个建议。如果用户开始拖动已选中的项目,则此建议基本上会清除所有选中的项目。当你说要取消选择多个元素时,也许这就是你想要的

    $(function() {
      $("#selectable").bind("mousedown", function(e) {
        if(e.target.className.indexOf('ui-selected') === -1){
            e.metaKey = true;
        }
      }).selectable();
    });
    

    您也可以发布支持html吗?这可能会有所帮助-演示URL不支持多个取消选择。正如我前面提到的,当我再次单击列表时,我希望保留选择。这就是为什么我要设置
    e.metaKey=true
    。谢谢你的回答。在我做了更多的研究之后,我一直在做同样的事情,但这看起来像是一个黑客行为,而不是一个永久的解决方案。这就是为什么我要悬赏,如果有任何内置功能,我可以利用,而不是调用选定的事件,然后取消选择。在你的问题中,你说过你无法实现这一点看起来是一个有效的解决方案,我不知道有更“内置”的方式来实现这一点,然后点击“选定”事件。特雷弗,你说得对。阿米努尔的回答是我到目前为止得到的最接近的回答。只是我希望获得更多的本地方法。我现在结束这项悬赏。谢谢阿米努尔。