2011-03-28 82 views
0

如何判斷選擇的父節點是誰?如何告訴選擇的所有者?

我得到一個選擇有:

 var userSelection; 
     if (window.getSelection) { 
      userSelection = window.getSelection(); 
     } 
     else if (document.selection) { 
      userSelection = document.selection.createRange(); 
     } 

     var selectedText = userSelection; 
     if (userSelection.text) 
      selectedText = userSelection.text; 

但我怎麼能知道誰是選擇的父節點?也就是說,如果整個選擇是從一個單獨的div我想知道那個div。

+0

可能重複http://stackoverflow.com/questions/4204822/how-can -i-check-the-selection-using-range-object-in-javascript) – 2011-03-28 23:44:34

回答

0

下將返回選擇的父元素在所有主要瀏覽器,有以下注意事項:

  • 獲取父節點而不是(這可以是任何類型的,但是是最常用一個文本節點)在大多數瀏覽器上很容易,但在IE <中很棘手。9.如果您需要這樣做,有一些庫,例如我自己的Rangy,它們爲所有主流瀏覽器提供DOM範圍和選擇支持。
  • 下面的功能只考慮選擇範圍內的第一個範圍。 Firefox是唯一支持多種選擇的主要瀏覽器;只考慮第一個。

代碼:

function getSelectionContainerElement() { 
    var container = null; 
    if (typeof window.getSelection != "undefined") { 
     var sel = window.getSelection(); 
     if (sel.rangeCount) { 
      container = sel.getRangeAt(0).commonAncestorContainer; 
      if (container.nodeType != 1) { 
       container = container.parentNode; 
      } 
     } 
    } else if (typeof document.selection != "undefined" && document.selection.type != "Control") { 
     container = document.selection.createRange().parentElement(); 
    } 
    return container; 
} 
的[?我如何檢查使用Range對象在JavaScript中選擇的節點(
+0

如何回合輸入字段? – 2015-02-20 09:29:40

0

嘗試$(':contains(' + selectedText + ')').parent()。那樣有用嗎?

+0

這真的很慢。 – scragz 2011-03-28 23:55:35

+1

確實如此,但如果您所擁有的僅僅是選定的文本,沒有上下文,您還有什麼要在頁面上找到它? – GregL 2011-03-29 00:04:28

相關問題