C'è un selettore / metodo di jQuery per trovare un elemento di appartenenza specifico n livelli fino?
-
22-08-2019 - |
Domanda
Si consideri il seguente codice HTML. Se ho un riferimento JSON all'elemento So che potrei caso speciale ogni condizione, ma sono più interessato "tuttavia profonda vi capita di essere, salire sull'albero fino a trovare elemento X" soluzione stile. Qualcosa di simile, ma più come jQuery / meno verbose Lo so circa il metodo parent (espressione), ma da quello che ho visto è permette di filtrare i genitori di un livello alto e non salire sull'albero fino a trovare expr (mi piacerebbe esempio di codice dimostra me sbagliato)
Soluzione La funzione genitori fa ciò che si vuole: Altri suggerimenti Inoltre, se si utilizza jQuery 1.3+ è possibile utilizzare il metodo più vicino Non jQuery ma questa opzione funziona molto meglio node.contains (otherNode) I Node.contains () restituisce un valore booleano che indica se
un nodo è un discendente di un dato nodo o non https://developer.mozilla.org/en/docs / Web / API / nodo / contiene in entrambi i casi
<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");