我正在使用JQuery UI - Selectable。我想要取消选择元素,如果它已经被按下并且已经被选中(切换)
你能帮我添加这个功能吗?
答案 0 :(得分:21)
由于所有的类回调,你不会比这更好:
$(function () {
$("#selectable").selectable({
selected: function (event, ui) {
if ($(ui.selected).hasClass('click-selected')) {
$(ui.selected).removeClass('ui-selected click-selected');
} else {
$(ui.selected).addClass('click-selected');
}
},
unselected: function (event, ui) {
$(ui.unselected).removeClass('click-selected');
}
});
});
答案 1 :(得分:1)
如果您在点击时按住Ctrl键,那么您已经可以使用jQuery UI选择该功能。
如果你真的需要它作为默认功能,你不需要使用selectable,你可以像一个简单的onclick处理程序那样做,就像nolabel建议的那样。
或者......您也可以编辑 jquery.ui.selectable.js 并添加一个可以满足您需求的选项。不应该太难,有4个地方选中 event.metaKey ,确保你的选项设置好,只需运行代码路径就像event.metaKey始终为真。
由于可选项可以使用更多自定义,您还可以为jQuery UI开发人员提供功能请求,以将其包含在下一个正式版本中。
答案 2 :(得分:0)
您必须在代码中注入两个简单元素才能实现您想要的效果。只要您需要反转/切换功能,这只会反转metaKey布尔值。
options: {
appendTo: 'body',
autoRefresh: true,
distance: 0,
filter: '*',
tolerance: 'touch',
inverted: false /* <= FIRST*/
},
_mouseStart: function(event) {
var self = this;
this.opos = [event.pageX, event.pageY];
if (this.options.disabled)
return;
var options = this.options;
if (options.inverted) /* <= SECOND*/
event.metaKey = !event.metaKey; /* <= SECOND*/