Esto puede parecer similar a otras preguntas, y he encontrado y leído esas preguntas y las he probado, pero no he encontrado una solución que funcione, por supuesto, mi código es único y tal vez necesito otro par de ojos para ayudarme a encontrar mi error
De todos modos, el problema:
Estoy creando una tabla (con PHP), y esencialmente si una celda tiene un valor, la fila obtiene una identificación de 'foo' y está oculta (usando CSS - display: none;), y cuando hago clic en una casilla de verificación I ' Estoy tratando de mostrar todas esas filas ocultas.
<tr id='foo'><td>this row is hidden</td></tr>
<tr><td>this row is not hidden</td></tr>
Mi jQuery es actualmente esto:
$("#showHiddenRows").click(function() {
if($(this).is(":checked")) {
alert("showing"); //This pops up
$("#tableName").each(function() {
if($("#tableName").find("tr").attr("id") === 'foo') {
$("#tableName").find("tr").attr("style", "display: initial;");
alert("found a hidden row"); //This does not pop up...
}
});
} else {
alert("hiding");
//essentially the same code here, but display:none;
}
Así que agregué alertas como puede ver, aparecen las alertas "mostrando" y "ocultando", pero "no encontró una fila oculta", lo que implica que al buscar en mi tabla no se encuentran filas con un ID de ' foo ', y no estoy seguro de por qué. ¿Hay una mejor manera de hacer esto / es esta la mejor manera, y si es así, qué hice mal?
¡Gracias de antemano!
Editar: explicación rápida de lo que tenía la intención de hacer el código:
- Recorre cada fila en la tabla tableName
- Si encuentra un tablerow con una identificación de 'foo', muestre u oculte la fila.
3 respuestas
No utilice ID duplicados ; use una clase CSS en su lugar. Por definición, los ID deben ser únicos; por lo tanto, no hay dos o más elementos que tengan la misma ID.
HTML:
<tr class='foo'><td>this row is hidden</td></tr>
<tr><td>this row is not hidden</td></tr>
JS:
$(function() {
$("#showHiddenRows").on('change', function() {
if( this.checked ) {
$('table tr.foo').show();
} else {
$('table tr.foo').hide();
}
});
});
$(function() {
$("#showHiddenRows").on('change', function() {
$('table tr.foo')[ this.checked ? 'show' : 'hide' ]();
});
});
Terminó con (gracias al usuario 3558931):
$(function() {
$("#tableName").on('change', function() {
if($(this).(":checked")) {
$('#tableName tr#foo').show();
} else {
$('#tableName tr#foo').hide();
}
});
});
Usar una identificación no única con jQuery causará problemas, pero lo dejaré con usted
Esto es lo que debe hacer para show
filas ocultas.
$("#showHiddenRows").click(function() {
if($(this).is(":checked")) {
$("#tableName").each(function() {
var table = $(this);
var hiddenRows = table.find("tr[id=foo]").show();
if(hiddenRows.length)
alert("found " + hiddenRows.length + " hidden rows");
});
} else {
alert("hiding");
}
});
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.