2012-04-03 23 views
10

Estoy usando una declaración if para determinar si un elemento tiene hijos. Si NO tiene hijos, quiero hacer algo solo con ese elemento.jQuery usando 'this' en una instrucción if

Aquí es la premisa de lo que estoy tratando de hacer:

if ($("#div a").children().length > 0){ 
    $(this).hide(); 
} 

lo tanto, si una etiqueta <a> no tiene hijos, quiero hacer algo para ese elemento específico (o varios elementos que también no tienen hijos)

El problema es que this no se ha definido porque es una declaración if.

Me falta algo por completo, pero no estoy muy seguro de cómo lograrlo. Cualquier consejo sería apreciado

Respuesta

9

Editar: Agregado DEMO Enlace

Puede utilizar .filter para comprobar el estado y llame .hide en los resultados del filtro. Consulte a continuación,

$("#div a").filter(function() { 
    return ($(this).children().length > 0) 
}).hide(); 
+0

perfecto, funciona muy bien. ¡Gracias! – scferg5

3

La solución simple es colocar el elemento en una variable.

var elem = $("#div a"); 
if (elem.children().length > 0){ 
    elem.hide(); 
} 
+3

No estoy seguro si su respuesta realmente funcionaría si #div tiene varias etiquetas 'a'. http://jsfiddle.net/skram/bxDNq/5/ –

+0

@SKS, Buen punto, +1 –

6

podría utilizar cada uno para recorrer los elementos

$('input').each(function(){ 
    if ($(this).val()) { 
    $(this).addClass('has-value'); 
    } 
});