2014-09-12 12 views
0

in this jsfiddle突出使用JQuery的更長的選擇?

我試着突出使用jQuery的文字,它的工作原理與更短的選擇(如3〜5個字),但不再選擇(見附件圖片)

當你點擊高亮鏈接選定的文本應該變成黃色。

enter image description here

每當我試圖做更長的選擇我得到這個錯誤:

Uncaught TypeError: Cannot read property 'replace' of undefined 

您可以找到jsfiddle.

+0

我只是說在你的JS一些的console.log說明書,看什麼是變量的內容。看到這個http://jsfiddle.net/bzm2o6r2/1/ 而且看起來你的existsInElements和exactElement總是引用$(body),但似乎選擇器包含有一個限制,當超過它似乎並不找到對象 – amine 2014-09-12 15:30:18

+0

我實際上沒有看到你的小提琴中描述的問題。我已經能夠選擇您想要在圖像中執行的相同段落,並按預期突出顯示整個項目。到目前爲止,我發現它並不突出顯示的唯一地方是我還包含源引用的span標記。使用IE10。但是,我確實在Google Chrome中看到了您描述的問題。 – 2014-09-12 15:41:01

回答

0

整個代碼試試這個。

$(document).on("click", ".share_link", function() { 

    var sel = window.getSelection ? window.getSelection() : document.selection.createRange(); // FF : IE 
    if(sel.getRangeAt){ // thats for FF 
    var range = sel.getRangeAt(0); 
    var newNode = document.createElement("span"); 
    newNode.setAttribute('class', 'high'); 
    range.surroundContents(newNode); 
    } else { //and thats for IE7 
    sel.pasteHTML('<span class="someclass">'+sel.htmlText+'</span>'); 


    } 
    }); 

FIDDLE:http://jsfiddle.net/yc2gouk3/

這種運作良好,具有長期選擇