Tengo el siguiente HTML:

<div id="myDiv">
  <table id="tbl0">
    <tr id="tr0" style="display: none;">
      <td>
        <label id="lbl0"></label>
      </td>
    </tr>
    <tr id="tr1" style="display: none;">
      <td>
        <label id="lbl1"></label>
      </td>
    </tr>
    <tr id="tr2" style="display: none;">
      <td>
        <label id="lbl2"></label>
      </td>
    </tr>
  </table>
</div>

Y el siguiente jquery que establece una fila en visible y actualiza (pero falla) la etiqueta con algo de texto.

var myStr = $(this).text();
var myArr = myStr.split(',');

$.each(myArr, function (i) {

  // This part works just fine
  var tr = $('#myDiv').find("#tr" + i);
  tr.css('display', 'inline');

  // The label is found, but I can't get jquery to update the text of
  // ...it no matter what I try
  var lbl = tr.find("lbl" + i);

  lbl.val('hello world'); // doesn't work
  lbl.text('hello world'); // doesn't work
  lbl.html('hello world'); // doesn't work

});

Entonces, ¿qué estoy haciendo mal aquí?

1
Jagd 22 ago. 2011 a las 21:15

4 respuestas

La mejor respuesta

Prueba esto...

var lbl = tr.find("#lbl" + i);

Estás intentando seleccionar una etiqueta <lbl1/>, que obviamente no existe

Use # para especificar una identificación para buscar.

5
jondavidjohn 22 ago. 2011 a las 17:17

Me topé con este hilo y, aunque me ayudó a llevarme en la dirección correcta, pude resolver de una manera un poco diferente una vez que encontré mi etiqueta estableciendo la propiedad innerHTML en el elemento de etiqueta. Estaba usando jQuery.

var labels = document.getElementsByClassName('someclassname');

$(labels).each(function (index, element) {    
    element.innerHTML = 'hello world';
});
0
jaredbaszler 23 sep. 2015 a las 17:21

Estás equivocado acerca de la etiqueta que se encuentra, debes usar un # para especificar que es una identificación:

var lbl = tr.find("#lbl" + i);

Ambas:

lbl.text('hello world');
lbl.html('hello world');

Son formas correctas de configurar el texto de la etiqueta, prefiero .html() ya que no analiza la cadena de htmlspecialchars, podría ser un poco más rápido.

1
Paul 22 ago. 2011 a las 17:22

El error está en esta línea:

var lbl = tr.find("#lbl" + i);

Olvidó el signo #, ya que está buscando por ID.

1
SiburNY 22 ago. 2011 a las 17:24