j查询启用/禁用文本选择错误
jQuery Enable/Disable Text Selection Error
当用户与下拉元素(没有 href 属性的锚点)交互时,我实际上试图避免双击/三次单击时选择文本。这是我创建的插件:
.unselectable
{
-khtml-user-select: none;
-moz-user-select: -moz-none;
-ms-user-select: none;
-o-user-select: none;
-webkit-user-select: none;
user-select: none;
}
;(function($)
{
$.fn.disableSelection = function()
{
return this.each(function()
{
var element = $(this);
element.addClass('unselectable');
element.attr('unselectable', 'on');
element.on('selectstart', false);
});
};
$.fn.enableSelection = function()
{
return this.each(function()
{
var element = $(this);
element.removeClass('unselectable');
element.removeAttr('unselectable', 'on');
element.on('selectstart', true);
});
};
})(jQuery);
$('#menu ul li a').click(function(e)
{
var element = $(this);
var target = $('#submenu_' + element.attr('class'));
element.disableSelection();
if (target.hasClass('hidden'))
{
target.hide();
target.removeClass('hidden');
}
target.fadeToggle(300, 'swing');
element.enableSelection();
});
我知道这些函数在jQuery 1.9 blablabla中被弃用了,它并不介意。实际上,一切都像魅力一样,真的。但是在处理以下行时,我不断收到错误:
element.on('selectstart', true);
控制台说:
Uncaught TypeError: ((n.event.special[g.origType] || (intermediate value)).handle || g.handler).apply is not a function
如果我在 enableSelection 函数中取消注释该行,错误不再出现,并且一切都像魅力一样工作,但我真的应该努力将该事件恢复到其原始状态,否则元素在其他情况下行为不端。
你知道这有什么问题吗?
>on
函数需要一个函数或false
作为处理程序参数。虽然允许false
作为function() { return false; }
的简写,但true
并非如此。
若要再次启用选择,请使用 off
删除事件处理程序。
相关文章:
- 或者在表单上选择默认选项文本(选择1)
- Javascript:包括特殊字符的文本选择
- 大写--文本区域中的文本选择
- 点击
- 项目时的文本选择
- 通过 javascript 在每次点击时动态禁用文本选择
- 文本框的 CSS 文本选择覆盖
- 单击“img”源时,文本选择未清除
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 当我单击画布并拖动鼠标时,光标将变为文本选择光标.我该如何防止这种情况发生
- 重新启用文本选择(Opera、webkit等)
- 绝对元素后面的元素上的文本选择
- 禁用JavaScript中的文本选择器
- 从网站中删除文本选择限制的脚本
- Javascript/jQuery Load 函数,文本选择
- HTML 浏览器的“文本”选择:选择整个单词(如在 iBooks 中)
- 锁定页面文本选择
- 如何删除文本选择中的子元素
- 如何将选定的“文本”选择框发送到按钮上的函数,以便使用角度进行 ng 单击
- 锤击.JS桌面文本选择和滑动冲突
- j查询启用/禁用文本选择错误