Esiste un equivalente di quanto segue in prototipo?
-
19-09-2019 - |
Domanda
In particolare il bit su Live ....
jQuery('.something').live('click', function() {
jQuery(this).parent('form').reset();
});
Credo che questo potrebbe funzionare così, anche se sono curioso di sapere la funzione di genitore:
jQuery('.something').live('click', function() {
this.form.reset();
});
Soluzione
Live
Prototype attualmente non ha il supporto "dal vivo". Si può fare qualcosa di simile con delega evento, però. Ecco dove si guarda per l'evento su un elemento padre, e poi nel gestore di eventi scoprire quale elemento figlio l'evento realmente accaduto in:
$('theFormID').observe('click', handleFormClick);
function handleFormClick(event) {
var element;
// Get the element on which the click occurred
element = event.findElement();
}
delegazione degli eventi è possibile solo con gli eventi che bolla (come 'click'); Non so se roba live di jQuery ha lo stesso problema.
Una cosa bella è che si può passare selettori CSS in Event#findElement
:
$('tbodyID').observe('click', handleTableClick);
function handleTableClick(event) {
var element;
// Get the element on which the click occurred
element = event.findElement('tr');
}
... che trova la tr
che è stato cliccato, anche se l'attuale clic si è verificato all'interno di un span
all'interno di un td
all'interno del tr
.
L'uso corretto della delega evento in grado di semplificare notevolmente di aggancio / sgancio elementi, soprattutto quando si è aggiunta e la rimozione di elementi in modo dinamico.
Non sarei sorpreso se c'è un plug-in per il prototipo che non "vive" di supporto.
principale
Lei ha detto che si desidera ottenere il padre del controllo fatto clic. Quando si collega un gestore con Prototype, per impostazione predefinita imposta le cose in modo che all'interno del vostro gestore, this
fa riferimento l'elemento su cui è stato impostato il gestore di eventi. Così, per esempio, se si dispone di un div
con la foo
ID:
$('foo').observe('click', function(event) {
// Here, `this` will refer to the `foo` element
});
È quindi possibile utilizzare di Prototype elemento # per ottenere il elemento padre. (Se si sta utilizzando la delega evento e associare l'evento sul genitore , in primo luogo, naturalmente basta usare this
direttamente e se è necessario anche per ottenere un riferimento alla cosa che è stato cliccato, utilizzare #findElement
come sopra.)