1

我正在尝试实现一个类似比较图表的表格,并且大量可选对象可以完美地工作,除了我需要的一些功能更改。我看到这两个问题都在前面的问题中得到了解决,但它们都没有提供完整的解决方案。

这个问题默认解决了多选行为,但只说“我自己做的”而不提供任何东西。查看 selectable 的内部结构,我发现如果我使用 !event.metaKey 条件,我可能会在没有太多麻烦的情况下获得我正在寻找的行为,但想知道是否有人有不涉及编辑的解决方案内部结构。

同样,此页面解决了我想要的套索切换效果,但我不确定套索功能在代码中的哪个位置被更改,并且脚本的其余部分(可排序功能)报告在 chrome 或 IE8 中不起作用(link)并且在这一点上已经过时了,我宁愿不依赖整个事情。

因此,如果有人可以帮助我解决其中任何一个问题,我将不胜感激。谢谢

[编辑] 格式化...

4

1 回答 1

2

我确信有更好的方法来做到这一点,但这是我在可选择的 js 文件中所做的。

对于总是多选:

我添加了一个选项“alwaysMulti”(默认为 false)。然后我替换了 with 的三个实例和with!event.metaKey(!event.metaKey && !options.alwaysMulti)两个实例。event.metaKey(event.metaKey || options.alwaysMulti)

为了让选择套索切换所选状态,我从链接到的第二页中找到了我需要的更改。我还添加了一个选项“lassoToggle”(默认为 false)来触发此功能。在 _mouseDrag 中,有一个条件if (hit),它被更改为以下内容:

    if (hit) {
                // SELECT
                selectee.deselect = false;
                if (selectee.selected || (options.lassoToggle && (selectee.startselected && event.metaKey)) {
                    selectee.$element.removeClass('ui-selected');
                    selectee.selected = false;
                    selectee.deselect = true;
                }
                if (selectee.unselecting) {
                    selectee.$element.removeClass('ui-unselecting');
                    selectee.unselecting = false;
                }
                if (!selectee.selecting && (!options.lassoToggle || !selectee.deselect) {
                    selectee.$element.addClass('ui-selecting');
                    selectee.selecting = true;
                    // selectable SELECTING callback
                    self._trigger("selecting", event, {
                        selecting: selectee.element
                    });
                }
                if(selectee.deselect && options.lassoToggle) {
                    selectee.$element.removeClass('ui-selecting');
                    selectee.selecting = false;
                    selectee.$element.addClass('ui-unselecting');
                    selectee.unselecting = true;
                    // selectable UNSELECTING callback
                    self._trigger("unselecting", event, {
                        unselecting: selectee.element
                    });
                }
            }

注意:多选的 event.metaKey 更改不在该代码示例中。

希望这对其他人有帮助!

于 2011-02-07T16:44:26.243 回答