【发布时间】:2016-09-16 03:20:38
【问题描述】:
我目前正在使用document.execCommand() 在内容可编辑的 div 中设置文本样式。我想将控制元素放在 JqueryUI 手风琴中,但是选择菜单的行为很奇怪。
因为我的选择元素放置在 JqueryUI 手风琴的窗格上,所以只要触发 mousedown 事件,就会取消选择 contenteditable 字段中的选定文本。有没有办法在第一次点击选择元素后禁用/阻止 mousedown 事件的传播?或者更重要的是,在取消选择 contenteditable 文本中的文本之前,能够单击选择菜单并通过选择元素的 onchange 事件选择一个项目来触发我的 document.execCommand() 的任何方式?
我尝试了以下方法,但它也会阻止选择菜单打开。 #propertiesPanel 是选择菜单所在的实际手风琴窗格。
另外,为了澄清,窗格已经打开,我在 contenteditable div 中选择文本,我只是试图单击选择元素以下拉并更改文本大小(例如)。当不使用 JqueryUI 手风琴时,完全相同的过程不会取消选择文本。
$('#propertiesPanel').mousedown(
function(event){
event.preventDefault();
}
);
上面的简单 stopPropegation 版本根本没有做任何事情。
$('#propertiesPanel').mousedown(
function(event){
event.stopPropagation();
event.stopImmediatePropagation();
}
);
另外,我刚刚尝试过,但它不起作用,但也许这比改变事件更容易接受?
$("#propertiesPanel").children().css({userSelect: 'none'});
我正在尝试的另一种方法是在整个面板上使用return false。它不会取消选择文本,但也不允许选择元素下拉。
$('#propertiesPanel').mousedown(function(){
return false;
});
【问题讨论】:
标签: javascript jquery html jquery-ui