Domanda

... almeno per me. Questo codice Usato per funzionare bene. Sono abbastanza sicuro che nulla sia cambiato, ma ora all'improvviso si comporta stranamente. Fondamentalmente sto cercando di creare funzionalità di editing in linea. Quando l'utente fa clic sul collegamento, genera dinamicamente una casella di testo e un collegamento di conferma e annulla. Ho problemi con il link Annulla che non rimuove tutto nella cella.

Html:

...
<td class="bid">
   <a href="javascript:" class="102093" title="Click to modify bid">$0.45</a>
</td>
...

JQuery vincolante (in $(function())):

$('.bid a').live('click', renderBidChange);
....
$('.report_table .cancel').live('click', cancelUpdate); 

renderBidChange (Questa funzione crea gli elementi dinamici):

function renderBidChange(){
    var cpc = $(this);
    var value = cpc.text().replace('$', '');
    var cell = cpc.parent('.bid');
    cpc.hide();

    var input = document.createElement('input');
    $(input).attr({type:'text',class:'dynamic cpc-input'}).val(value);
    cell.append(input);

    var accept = document.createElement('a');
    $(accept).addClass('accept').attr({'href':'javascript:',
      'title':'Accept Changes'}).text('Accept Changes');
    cell.append(accept);

    var cancel = document.createElement('a');
    $(cancel).addClass('cancel').attr({'href':'javascript:',
      'title':'Cancel Changes'}).text('Cancel Changes');
    cell.append(cancel);

    $(input).focus();
    input.select();
}

cancelUpdate Questa funzione rimuove tutto ciò che è visibile (tutta la spazzatura dinamica in questo caso) nella cella e mostra ciò che era lì.

function cancelUpdate(){
    var cell = $(this).parent();
    cell.find(':visible').remove();
    cell.find(':hidden').show();
}

Tuttavia, per qualche motivo, il collegamento Annulla rimane dopo aver fatto clic! Tutto il resto viene rimosso tranne quello. Wtf

Grazie per ogni intuizione che sei in grado di fornire! Sono sicuro che sono solo alcuni piccoli dettagli stupidi che ho finito [caffeina] ...

AGGIORNARE Immediatamente dopo aver pubblicato questo, ho epifanato che potrebbe essere un problema CSS, ma dopo aver controllato il mio codice, non lo è.

È stato utile?

Soluzione

Hai bisogno di una leggera modifica qui:

$('.bid a:not(.cancel)').live('click', renderBidChange);

Da quando ti sei trasferito a .live(), la prima funzione è anche in esecuzione con un clic su Annulla :)

Altri suggerimenti

Cosa succede se cambi:

$('.report_table .cancel').live('click', cancelUpdate); 

a

$('.bid .cancel').live('click', cancelUpdate); 

Non mi aspetto una soluzione, ma sto solo doppiando

Qual è la funzione "live" per .accept? Funziona (presumibilmente così)

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