2017-03-22 1 views
1

Ich mache Inline-Bearbeitung mit delete, cancel und update buttons.Wenn ich versuche, die Bearbeitung zu stornieren seine Anzeige Fehler als Cannot read property 'replace' of undefined.
Was ist ein Fehler in meinem Code?Kann nicht lesen 'ersetzen' von undefined in jquery

function editCancel(id) { 
    var cancelId = $(this).attr('id'); 
    $("#" + cancelId).hide(); 
    var number = cancelId.replace("editCancel", ""); 
    $("#update" + number).hide(); 
    $("#edit" + number).show(); 
    $("#delete" + number).show(); 

} 

https://jsfiddle.net/zs0hqv3e/

Antwort

3

Problembereich ist this in der Funktion, er bezieht sich auf Fenster Objekt nicht die Taste, die die Funktion aufgerufen wird.

ändern Sie bitte Ihre Funktion

function editCancel(elem) { 
    var cancelId = $(elem).attr('id'); 
    //rest of code 
} 

das aktuelle Element Pass in den Inline-Click-Handler wie

<button class="btn editCancel btn-danger" onclick="editCancel(this)"></button> 

Update Fiddle

+0

Vielen Dank :-) – krish

1

Verwenden Ereignis Delegation für Veranstaltungen Bindungselemente dynamisch hinzugefügt.

$(document).on('click', ".editCancelAction", function(){ 
    //Your code. 
    var cancelId = $(this).attr('id'); 
    $("#" + cancelId).hide(); 
    var number = cancelId.replace("editCancel", ""); 
    $("#update" + number).hide(); 
    $("#edit" + number).show(); 
    $("#delete" + number).show(); 
}); 

aktualisiert Geige: https://jsfiddle.net/zs0hqv3e/4/

+0

Kann ich mehr als ein '$ (document) .auf()' Methode verwenden ?. – krish

+0

Aber es dauert mehr Zeit, um die Seite zu laden.Ich habe vier Tasten, kann ich separate '$ (Dokument) .On()' Methode für jede Taste verwenden? – krish

Verwandte Themen