Vuoi dire qualcosa del genere?
$('.click-me').click(function() {
var $theAncestor = $(this).closest('#ancestor-1');
}
Questo cercherà attraverso tutti gli antenati fino a quando non viene trovata una corrispondenza.
http://api.jquery.com/closest/
EDIT:
Girolamo, la tua domanda può essere interpretata in diversi modi. Questo parla della potenza e della flessibilità di jQuery.
Si prega di considerare quanto segue.
In primo luogo, per rispondere alla domanda, sì, è possibile utilizzare jQuery per selezionare un antenato di un elemento.
penso che possiamo supporre che siete a conoscenza della capacità di jQuery per selezionare qualsiasi elemento, se antenato o discendente tramite:
$('#myElement')
Dato il click-me ad esempio, se si desidera avere un insieme di tutti gli antenati di un elemento restituito, uso:
$(this).parents()
o
$(this).parents(selector)
Ma sii consapevole che questo attraverserà TUTTI gli antenati che ritornano tutti, o tutti quelli che corrispondono quando viene dato un selettore.
Se si desidera avere il padre immediato restituito, uso:
$(this).parent()
Se si sa quale antenato è necessario, l'uso:
$(this).closest(selector)
ma essere consapevoli che verrà restituito solo il prima partita, e se l'elemento corrente (questo) è una corrispondenza, lo restituirà.
Spero che questo aiuti.
La differenza tra 'parents()' e 'closest()' è sottile ma importante. 'closest()' restituirà l'elemento corrente se è una corrispondenza; 'parents()' restituisce _ solo antenati_. Molti non vogliono la possibilità di restituire l'elemento corrente. 'closest()' restituisce anche solo un elemento; 'parents()' restituisce tutti gli elementi corrispondenti. –
@Ryan - La mia risposta era specifica per la domanda. La domanda suggerisce una query per uno specifico antenato, piuttosto che una domanda generale su cosa siano i genitori. Data la natura crescente degli ID degli antenati, sembra che jerome possa voler calcolare l'id del predecessore dal contesto e richiederlo. – user113716
Patrick, Se Jerome intendeva calcolare l'id ancestrale dal contesto, ** non ha assolutamente senso ** usare '$ (this) .closest ('# ancestor-1')' quando '$ ('# antenato-1 ') 'non solo sarebbe sufficiente, ma sarebbe anche più veloce. A volte, è meglio leggere le intenzioni di una domanda e indirizzare la risposta di conseguenza. –