为什么.disableSelection()已弃用?
JQueryUI 1.9中的.disableSelection已被弃用。 我能find的唯一解释就是, “禁用文本select是不好的,不要使用这个”。 和“我们不应该让开发人员混淆文本select,最初是为了交互插件,但是他们都在正确地处理文本select。”
由于没有别的build议,我认为这意味着它总是很糟糕,但我无法理解他们的理由。 精心devise的UI应用程序的双击/三击或其他无意义的select不当地应用了文本高亮效果,并(对我而言)立即消除了强大用户体验的错觉。
桌面应用程序不会受到这个! 桌面环境中的button和其他控件是像素区域,无论您对它们做了什么(或者它们被破坏),这些像素都看起来坚实并且直观地起作用。 Web应用程序由复杂的HTML框,背景,边框和图像(像素的networking模拟)组成的事实没有理由背叛我们与之交互的屏幕元素不是primefaces的物理对象的错觉。
在下面的图片中,可以说一些文本应该是可select的,例如可以是应用程序数据的面板中的文本段落。 但对于某些应用程序来说,这是一个合理的deviseselect ,其他部分(如button,标签,手风琴标题中的文本以及modal dialog背后的文本)将不可选。 这特别适用于可拖动/可sortingtypes的行为。
1)我误解了他们的决定? 这个build议是否比JQuery更具体?
2)如果这意味着文本总是可以这样select的话,请提供一个更完整的解释。
3)无论如何,如果我打算这么做的话,那么disableSelection已经被废弃了,那么什么是最高性能,完整,尊重,跨浏览器和普遍可用的方法呢?
您可以使用CSS在大多数浏览器中完成此操作: http : //jsfiddle.net/fQthQ/
* { -ms-user-select: none; /* IE 10+ */ -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } .selectable { -ms-user-select: auto; -moz-user-select: auto; -khtml-user-select: auto; -webkit-user-select: auto; user-select: auto; }
Opera目前不支持这个function。
查看MDN页面获取更多信息: https : //developer.mozilla.org/en-US/docs/CSS/user-select
禁用文本select有用的真实情况是其<li>
被编程为可拖动(用于sorting)的<ul>
元素。 拖动工作正常,除了在拖动用户时正在select文本。 当然,这是disableSelection()的合法用法。
我知道这可以不用这个方法来完成(否则这个方法不可能做到这一点); 但我想使用disableSelection()的原因是在一个地方简洁地expression我的愿望,并让jQuery-UI处理我的跨浏览器兼容性问题,而不是必须使用几个CSS规则和一些JS的组合(用于IE7) 。
我相信这个function已经被弃用了,因为有人在禁用select的网站上感到不满,并且认为这不是他们应该鼓励的做法。 这类似于networking程序员拒绝支持stream行的传统浏览器,因为他们不想鼓励他们使用。 这样一个程序员会被解雇,但是当你拥有一个受欢迎的图书馆的权力时,你可以放弃将你的理念强加给他人。 弃用此function会使程序员想要禁用select,浪费时间寻找替代方法。 通过惩罚邪恶的人,jQuery-UI大概会使他们改变方式,我们的社会将不会被淹没在禁用select的网站。 所以你看,有一个非常好的合理化,谁写的“禁用文本select是坏的,不要使用这个。 在正式文件中可以把自己看成英雄。 我们是这里的坏人。
作为CSS user-select: none;
的替代user-select: none;
技术,我想简单地通过$(document).on('dblclick mousedown', '.prevent-select', false);
来防止双击和默认行为$(document).on('dblclick mousedown', '.prevent-select', false);
有一些优点:
- 如果用户想要在元素周围拖动光标,仍然允许文本select。 只需在用户快速点击时防止恼人的文本select。
- 更好的浏览器支持
- 不被jQuery团队弃用(代码审查没有恶意的诅咒)
我不能同意更多的@WesleyMurch,希望我能给你更多的+ 1S :)我也觉得,JS不应该是前进的方式,CSS可能会更好… …,
如果你需要select切换(在某些情况下,如果dynamic),你可以使用jQuery的类,(旧的IE浏览器)之间切换,你可能会问?
那么这是一个很好的方式(微妙的工具),以阻止人们继续使用旧IE,因为他们错过的东西。
http://caniuse.com/#search=user-select
(尽pipeIE 8/9(来自%的用户数量)是一个很大的数字,但这取决于你真正关心的)
我会使用CSS选项作为@Shmiddty解释,但也许,启用和禁用,因为你走,但这只是我的意见:)