我正在使用 JQuery UI - Selectable。如果元素已被按下并且已被选中,我想取消选择它(切换)
你能帮我添加这个功能吗?
我正在使用 JQuery UI - Selectable。如果元素已被按下并且已被选中,我想取消选择它(切换)
你能帮我添加这个功能吗?
由于所有的类回调,你不会比这做得更好:
$(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');
}
});
});
如果您在单击时按住 Ctrl 键,则您已经可以使用 jQuery UI 来选择该功能。
如果您确实需要将其作为默认功能,则不需要使用 selectable,您可以将其作为简单的 onclick 处理程序来执行,就像 nolabel 建议的那样。
或者......您也可以编辑jquery.ui.selectable.js并添加一个选项,这正是您所需要的。不应该太难,有 4 个地方检查event.metaKey,确保您的选项已设置,只需运行代码路径,就好像 event.metaKey 始终为真。
由于可选择项可以使用更多自定义,您还可以向 jQuery UI 开发人员提出功能请求,将其包含在下一个正式版本中。
你必须在代码中注入两个简单的元素来实现你想要的。每当您需要反转/切换功能时,这只会反转 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*/