2011-05-02 39 views
10

有没有什么办法来定义,只有一个项目可以选择与jquery.selectable部件?Jquery UI SELECTABLE,如何选择一个项目?

或者我必须执行一个捕获事件和操纵我的自我的工作环境会发生什么?

+0

你想取消先前选定的项目?或者阻止选择第二个项目? – 2011-05-02 10:41:00

+0

我假装只得到一个像“下拉行为”或单选按钮一样选择的项目。 – 2011-05-02 11:58:27

回答

9
$("#myList li").click(function() { 
    $(this).addClass("selected").siblings().removeClass("selected"); 
}); 
+2

'selected'应该是'ui-selected' – theblang 2012-12-03 20:20:36

+0

此外,这不处理鼠标选择的情况。 – theblang 2012-12-04 22:55:14

18

我扩大了对Nirmal的答案限制鼠标选择的情况。另外,我觉得使用selected选项更清洁,而不是完全独立的事件处理程序。

$("#selectable").selectable({ 
    selected: function(event, ui) { 
     $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected");   
    }     
}); 

还有一个小问题。当用鼠标选择多个项目时,最后的项目将始终被选中。这是因为传递给selected选项的功能是针对每个选定的项目运行的,我假设这些项目按项目顺序排列。理想情况下,鼠标光标所在的项目将被选中。我没有解决这个问题,因为我主要是想在使用鼠标时多选择约束。

+0

+1这很好。 (在我的具体情况下,这些物品没有后代。) – Matt 2014-05-14 23:00:18

6

我改进了mattblang的答案。兄弟姐妹能有后人也,所以更普遍的答案是:

$("#selectable").selectable({ 
    selected: function(event, ui) { 
     $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected").each(
      function(key,value){ 
       $(value).find('*').removeClass("ui-selected"); 
      } 
     ); 
    } 
}); 
+0

这就是更好的...改善回答 – 2015-06-03 15:50:15