循环浏览突出显示的文本
loop through highlighted text.
我有一个关于javascript的问题我需要循环浏览用户选择(突出显示的文本)并从 TRL 或 LTR 更改文本方向。这是我做的:
this._execCom("FormatBlock",'<div>');
var node = null;
if (this.area.contentWindow.getSelection) {
node = this.area.contentWindow.getSelection().anchorNode.parentNode;
}
else if (this.area.contentWindow.document.selection) {
var range = this.area.contentWindow.document.selection.createRange();
if (range) {
node = range.parentElement();
}
var walker=this.area.contentWindow.document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, null, false);
while (walker.nextNode())
{
x=walker.currentNode.tagName;
if( x == 'DIV')
walker.currentNode.style.direction="ltr";
}
这会更改所有div 的方向,即使它们是否在突出显示的文本中,我只需要对用户选择进行更改.
你能帮我吗.
非常感谢
编辑:我误解了你的问题。因此,您只希望用户能够单击并拖动以选择哪些元素应该在 ltr 和 rtl 之间切换"方向"。我有一个使用选择范围的替代方法,在此解决方案中使用它将非常痛苦。
在这里,我使用 jQuery 监听"mousemove"事件,检查鼠标左键是否被按下。如果是这样,我切换方向 css 属性。我还使用自定义数据标志来防止拖动鼠标时元素闪烁。
其中还有一点可以防止选择段落,这可能是您的意图,但我觉得很烦人。如果您希望他们能够选择文本,您可以注释掉/删除该部分。
这是小提琴:http://jsfiddle.net/nbWYK/8/
TL;DNR:
$(document).on("mousemove", 'p', function(e) {
var $this = $(this);
if ($this.data('ignore-direction-toggle')) return;
if (e.which == 1) {
$this.data('ignore-direction-toggle', true);
$this.css({
'direction': ($this.css('direction') == 'ltr' ? 'rtl' : 'ltr')
});
}
}).on('mouseleave', 'p', function(e) {
var $this = $(this);
if ($this.data('ignore-direction-toggle')) $this.data('ignore-direction-toggle', null);
});
相关文章:
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- JavaScript NaN错误,输入文本显示为NaN
- 关于socket.io实时文本显示的问题
- 如何使用javascript使文本显示在文本字段中
- 在它们之间切换时,jQuery 文本显示在活动文本下方
- 使用 ajax 乱码文本显示图像
- 带有文本显示js功能的图像映射 - 某些部分不显示
- 来自 Ajax 请求的文本显示不正确
- 如何使用 JavaScript 使文本显示
- 是否可以将元素内部的文本显示在 ::在 css 之前
- on更改文本框的文本显示在另一个文本框上
- 在文本显示在Scroll上之前在页面上隐藏文本的问题
- 使用带文本显示的Jquery切换文本
- 如何使文本显示速度变慢
- 如何将图片添加到点击计数器文本显示<图像><点击量>
- 文本显示有延迟
- 根据在另一个文本框中输入的文本显示文本框中的文本
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 使文本显示为几行可点击的线条
- 如何使文本显示