2011-08-27 44 views
14

Có thể lấy phần tử gốc của văn bản đã chọn trong trang không? Ví dụ:Lấy phần tử gốc của văn bản đã chọn

<div class="someparent"> 

Selection of this text should refer to the 'someparent' class. 

<span class="spanparent">If this is selected, the parent should be this span</span> 

</div> 

Vì khi nhận được văn bản đã chọn, thường lấy từ cửa sổ hoặc tài liệu (tùy thuộc vào trình duyệt) nhưng có thể lấy yếu tố gốc của văn bản đã chọn không?

+0

bạn có thể nói lại đó. Tôi không thể có được bàn tay trên waht bạn cần. – Sgoettschkes

+1

Nếu bạn muốn nhận div diveparent khi văn bản trong spanparent được chọn, bạn có thể sử dụng $ ('span.spanparent'). Select (function() {$ (this) .parent(); ...}); – Sgoettschkes

+0

@Boo: Đó phải là câu trả lời :) –

Trả lời

30

Đây là một hàm sẽ giúp bạn có được phần tử trong cùng chứa toàn bộ lựa chọn người dùng trong tất cả các trình duyệt chính (trừ khi nhiều phạm vi được chọn, chỉ được hỗ trợ trong Firefox. Ví dụ để đối phó với trường hợp đó quá):

function getSelectionParentElement() { 
    var parentEl = null, sel; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      parentEl = sel.getRangeAt(0).commonAncestorContainer; 
      if (parentEl.nodeType != 1) { 
       parentEl = parentEl.parentNode; 
      } 
     } 
    } else if ((sel = document.selection) && sel.type != "Control") { 
     parentEl = sel.createRange().parentElement(); 
    } 
    return parentEl; 
} 
+0

H SUP TRỢ Tôi CHỌN VĂN BẢN TỪ KHÓA KHÁC NHƯ THẾ NÀO ĐỂ NHẬN TẤT CẢ CÁC PHỤ HUYNH ?? – Ravi

+0

Cách lấy id của phụ huynh nếu phần tử là span – Ravi

+0

chỉ để hoàn thành câu trả lời, 'parentEl.tagName' cung cấp thẻ kèm theo. –

5

tôi muốn đề nghị sử dụng này

window.getSelection().anchorNode.parentElement 

tôi đã thử nghiệm trong safari OSX 10.9

+0

-1, khi tôi lựa chọn được thực hiện, nhiều nút có thể được chọn cùng nhau và neoNode hoặc focusNode bất kỳ nút nào trong số chúng có thể cao hơn trong cây DOM (tùy thuộc vào hướng và chiều dài lựa chọn). Người ta nên có một phụ huynh bao gồm cả anchorNode và focusNode. –

Các vấn đề liên quan