Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/09/2012, 11:38
Avatar de catpaw
catpaw
 
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 7 meses
Puntos: 23
evitar que función me tome un texto como texto plano

Que tal forer@s, necesito sus conocimientos, ya que los mios son verdes aun, veran:

De alguna manera una función toma el texto que encuentre entre las etiquetas <li> y </li> y lo muestra en un organigrama, si tuviera <li><ul><li></li></ul></li> la funcion es capas de identificar la estructura y crear el organigrama de los niveles segun listas encuentre.

Bueno aqui mi problema es que, como comento, el texto que encuentre entre <li></li> lo toma, pero lo toma algo asi como texto plano, es decir si yo pongo alguna etiqueta a este texto simplemente la "desecha", por ejemplo:

Código HTML:
<li>
     nivel <b>1</b><br />
     <b>nombre del nivel</b>
</li> 
ese texto saldría en una sola linea y sin las negritas

Y pues por requerimientos necesito poder darle cierto formato a ese texto.

La parte de la funcion que hace el cambio o toma el texto es esta:

Código Javascript:
Ver original
  1. $.fn.orgChart = function(options, $appendTo) {
  2.     var opts = $.extend({}, $.fn.orgChart.defaults, options);
  3.  
  4.     return this.each(function() {
  5.       $this = $(this);
  6.       var $container = $("<div class='" + opts.chartClass + "'/>"); //aca busca el contenedor de las listas
  7.       if($this.is("ul")) {
  8.         buildNode($this.find("li:first"), $container, 0, opts); //pregunta si es el primer li y le asigna la funcion builNodes
  9.       }
  10.       else if($this.is("li")) { //si no es el primer li, le asigna la misma funcion pero con otros parametros
  11.         buildNode($this, $container, 0, opts);
  12.       }
  13.       $appendTo.append($container);
  14.     });
  15.   };
  16.  
  17.   $.fn.orgChart.defaults = {
  18.     depth      : -1,
  19.     stack      : false,
  20.     chartClass : "orgChart",
  21.     hoverClass : "hover",
  22.     nodeText   : function($node) {return "";}
  23.   };
  24.  
  25.   function buildNode($node, $appendTo, level, opts) {
  26.     var $table = $("<table cellpadding='0' cellspacing='0' border='0'/>");
  27.     var $tbody = $("<tbody/>");
  28.  
  29.     // Make this node...
  30.     var $nodeRow = $("<tr/>").addClass("nodes");
  31.     var $nodeCell = $("<td/>").addClass("node").attr("colspan", 2);
  32.     var $childNodes = $node.children("ul:first").children("li");
  33.     if($childNodes.length > 1) {
  34.       $nodeCell.attr("colspan", $childNodes.length * 2);
  35.     }
  36.     [B]var $heading = $("<h2>").text(opts.nodeText($node));[/B] //aqui creo que es donde toma el texto lo guarda en la variable heading
  37.     [B]$nodeDiv = $("<div>").addClass("node").append($heading);[/B] //aqui al texto lo asigna a un div y a este le pone la clase que lo muestra como una cajita
  38.     $nodeCell.append($nodeDiv); //aca me supongo que dibuja las lineas que conectan las cajitass
  39.     $nodeRow.append($nodeCell);
  40.     $tbody.append($nodeRow);
  41.  
  42. ...

Bueno a mi poco conocimiento y mi entender creo que en estas lineas esta el asunto

var $heading = $("<h2>").text(opts.nodeText($node));
$nodeDiv = $("<div>").addClass("node").append($heading);

heading es el texto "en plano" entonces .text quita las etiquetas o como??

si alguien me puede dar su punto de vista se los agradeceré infinitamente