2012-05-14 19 views
0

私は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のための方向を変えます。

お願いします。

多くのお礼ありがとうございます

+0

あなたは*フル*コードスニペットを表示することができますか?このコードは、一貫性のないブレース、一貫性のないインデント、そして何がポストされているかによってわかるように、宣言されていない変数を暗黙的なグローバル変数とする混乱です。 –

+0

- 地獄です。 – mowwwalker

+0

これが見つかりました:http://stackoverflow.com/questions/3454152/cross-browser-selection-range-library – mowwwalker

答えて

0

編集:私はあなたの質問に誤解しました。そのため、ユーザーはクリックしてドラッグしてltrとrtlの間で '方向'を切り替える要素を選択できるようにします。選択範囲を使用する代わりに、このソリューションで使用するのは非常に苦労します。

ここでは、マウスの左ボタンが押されているかどうかを確認するために、jQueryを使用して 'mousemove'イベントを聴いています。もしそうなら、私はdirection 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); 
}); 
関連する問題