Foros del Web » Programando para Internet » Javascript » Frameworks JS »

No entiendo bien este código

Estas en el tema de No entiendo bien este código en el foro de Frameworks JS en Foros del Web. ¿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 ...
  #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

Etiquetas: código, html, javascript, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:22.