Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2011, 18:54
zant95
Invitado
 
Mensajes: n/a
Puntos:
Busqueda No entiendo bien este código

¿Alguien me explica cómo trabaja este código? Evidentemente sé el fin de este, pero no sé el por qué, ya que no tengo claro el concepto de los nodos.

Código Javascript:
Ver original
  1. jQuery.fn.highlight = function(pat) {
  2.  function innerHighlight(node, pat) {
  3.   var skip = 0;
  4.   if (node.nodeType == 3) {
  5.    var pos = node.data.toUpperCase().indexOf(pat);
  6.    if (pos >= 0) {
  7.     var spannode = document.createElement('span');
  8.     spannode.className = 'highlight';
  9.     var middlebit = node.splitText(pos);
  10.     var endbit = middlebit.splitText(pat.length);
  11.     var middleclone = middlebit.cloneNode(true);
  12.     spannode.appendChild(middleclone);
  13.     middlebit.parentNode.replaceChild(spannode, middlebit);
  14.     skip = 1;
  15.    }
  16.   }
  17.   else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
  18.    for (var i = 0; i < node.childNodes.length; ++i) {
  19.     i += innerHighlight(node.childNodes[i], pat);
  20.    }
  21.   }
  22.   return skip;
  23.  }
  24.  return this.each(function() {
  25.   innerHighlight(this, pat.toUpperCase());
  26.  });
  27. };
  28.  
  29. jQuery.fn.removeHighlight = function() {
  30.  return this.find("span.highlight").each(function() {
  31.   this.parentNode.firstChild.nodeName;
  32.   with (this.parentNode) {
  33.    replaceChild(this.firstChild, this);
  34.    normalize();
  35.   }
  36.  }).end();
  37. };

Fuente: http://johannburkard.de/blog/program...ry-plugin.html