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();
 });
È stato utile?

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.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top