Frage

... zumindest für mich. Dieser Code Gebraucht gut arbeiten. Ich bin mir ziemlich sicher, dass sich nichts geändert hat, aber jetzt verhält es sich plötzlich seltsam. Grundsätzlich versuche ich, Inline -Bearbeitungsfunktionen zu erstellen. Wenn der Benutzer auf den Link klickt, generiert er dynamisch ein Textfeld und einen Bestätigungs- und Abbrechen -Link. Ich habe Probleme mit dem Abbrechen -Link, das nicht alles in der Zelle entfernen.

HTML:

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

Bindung jQuery (in $(function())):

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

renderBidChange (Diese Funktion erstellt die dynamischen Elemente):

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 Diese Funktion beseitigt nur alles sichtbare (in diesem Fall alle dynamischen Müll) in der Zelle und zeigt, was früher dort war.

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

Aus irgendeinem Grund bleibt der Abbrechen -Link jedoch, nachdem er geklickt wurde! Alles andere wird entfernt, außer dass. Wtf

Vielen Dank für jede Einsicht, die Sie bieten können! Ich bin mir sicher, dass es nur ein dummes kleines Detail ist, dass ich [koffeinhaltig] übersehen bin ...

AKTUALISIEREN Unmittelbar nach dem Posten habe ich gepostet, dass es sich um ein CSS -Problem handelt, aber nach dem Doppelpunkt meines Codes ist dies nicht der Fall.

War es hilfreich?

Lösung

Sie brauchen hier einen leichten Verbesserung:

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

Seit du zugezogen bist .live(), Die erste Funktion wird auch mit einem Klick auf Abbrechen ausgeführt :)

Andere Tipps

Was passiert, wenn Sie sich ändern:

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

zu

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

Ich erwarte keine Lösung, aber ich bin nur doppelt, dass

Was ist die "lebende" Funktion für .Accept? Funktioniert es (vermutlich so)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top