2014-02-17 2 views
1

Я хочу выделить слова и слова только я не хочу выделять слова посреди слов, например «муравей может убить слона» здесь я хочу только выделить муравей ... но, как я ушел для выделения кода я нашелjquery выделить только слова

jQuery.fn.highlight = function (pat, className,caseSen) { 

function innerHighlight(node, pat) { 

    var skip = 0; 
    if (node.nodeType == 3) { 
     if(caseSen==false){ 
     var pos = node.data.toUpperCase().indexOf(pat);} 
     else 
     { 
      var pos = node.data.indexOf(pat); 
     } 
     if (pos >= 0) { 
      var spannode = document.createElement('span'); 
      spannode.className = className || 'highlight'; 
      var middlebit = node.splitText(pos); 
      var endbit = middlebit.splitText(pat.length); 
      var middleclone = middlebit.cloneNode(true); 
      spannode.appendChild(middleclone); 
      middlebit.parentNode.replaceChild(spannode, middlebit); 
      skip = 1; 
     } 
    } else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) { 
     for (var i = 0; i < node.childNodes.length; ++i) { 
      i += innerHighlight(node.childNodes[i], pat); 
     } 
    } 
    return skip; 
} 
return this.each(function() { 
    if(caseSen==false){ 
    innerHighlight(this, pat.toUpperCase()); 
    }else 
    { 
     innerHighlight(this, pat); 
    } 
}); 

};

его подсветка «муравей может убить слона» Я только хочу выделить муравья здесь.

Я использую содержимое редактируемой DIV

ответ

1
function innerHighlight(node, pat) { 
    var html = node.innerHTML; 
    var rexp = new RegExp('\\b('+pat+')\\b', 'igm'); 
    html = html.replace(rexp, '<span class="hl">$1</span>'); 
    node.innerHTML = html; 
} 

и образец http://jsfiddle.net/9ELur/

+0

Использование 'innerHTML' является злым, поскольку оно уничтожит все ваши события. – dude

1

взглянуть на mark.js, он может выделить свои собственные ключевые слова или регулярные выражения. Пример:

$(".context").mark("keyword"); 
Смежные вопросы