¿Hay un selector / método de jQuery para encontrar un elemento de n niveles matriz específica para arriba?
-
22-08-2019 - |
Pregunta
Considere el siguiente código HTML. Si tengo una referencia JSON para el elemento Sé que podría caso especial cada condición, pero estoy más interesado "por profunda que resultan ser, subir al árbol hasta que encuentre el elemento X" solución estilo. Algo como esto, pero más como jQuery / menos verbosa Yo sé sobre el método parent (expr), pero por lo que he visto es que permite filtrar los padres en un nivel superior y no subir al árbol hasta que encuentre expr (Me encantaría ejemplo de código que demuestra que estoy equivocado)
Solución La función padres hace lo que quiere: Otros consejos Además, si usted está usando jQuery 1.3+ puede utilizar el método más cercano No jQuery, pero esta opción funciona mucho mejor node.contains (otherNode) Los Node.contains () devuelve un valor booleano que indica si
un nodo es un descendiente de un nodo dado o no https://developer.mozilla.org/en/docs / web / API / nodo / contiene en ambos casos
<table id="my-table">
<tr>
<td>
<button>Foo</button>
</td>
<td>
<div>
<button>Bar</button>
</div>
</td>
</tr>
</table>
<script type="text/js">
$('#table button').click(function(){
//$(this).parent().parent() will work for the first row
//$(this).parent().parent().parent() will work for the second row
//is there a selector or some magic json one liner that will climb
//the DOM tree until it hits a TR, or do I have to code this myself
//each time?
//$(this).????
});
</script>
var climb = function(node, str_rule){
if($(node).is(str_rule)){
return node;
}
else if($(node).is('body')){
return false;
}
else{
return climb(node.parentNode, str_rule);
}
};
$(this).parents("tr:first");
$(this).closest("tr");