2014-06-23 3 views
1

J'ai fait des recherches sur la façon de remplacer/changer le bouton html original par un autre. Mais ni les moyens ne fonctionnent.Remplacement du bouton html par jquery

Voici mes codes:

Javascript:

var editBtn = "editBtn" + id; //in order to get the id of the edit button 
var cSave = document.getElementById(editBtn); 
cSave.innerHTML = "<td><button id='saveBtn' onclick='saveChange(" + id + ");' >Save</button></td>"; 

Le code ci-dessus est juste un bouton à l'intérieur ajoutant le bouton existant.

HTML:

<table> 
<td> 
<% 
    out.println("<button id='editBtn" + mc.getId() + "' onclick='editMC(this.id);'>Edit</button>"); 
%> 
</td> 
</table> 

Le mc.getId() est une méthode pour obtenir le "id".

La dernière approche que j'ai essayé est mentionné ci-dessous, mais il ne fonctionne pas:

document.getElementById(editBtn).onclick = function() {saveChange(id)}; 

Et:

$(document).ready(function() { 
     $("#editBtn").replaceWith("<td><button id='saveBtn' onclick='saveChange(" + mcId + ");' >Save</button></td>"); 
}); 

Quoi qu'il en soit, je peux faire pour changer le bouton d'édition pour sauver le bouton tout en onclick() est effectué?

+0

Vous avez marqué cette question comme [tag: jquery], alors avez-vous essayé de l'utiliser? –

+0

'document.getElementById (editBtn)', IS editBtn Variable? , sinon faites-le 'document.getElementById (" editBtn ")' –

+0

'# editBtn' n'est pas l'ID du bouton, il appelle une fonction qui ajoute quelque chose à l'ID. – adeneo

Répondre

1

Vous pouvez modifier le texte du bouton de Modifier pour enregistrer à l'aide innerHtml. Vous mettez actuellement du code HTML dans l'élément du bouton. Essayez

var cSave = document.getElementById(editBtn); 
cSave.innerHTML = "Save"; 
cSave.onclick = function() {saveChange(id)}; 
+0

Anjum, le texte a changé, mais la fonction() {saveChange (id)} ne fonctionne pas en cliquant à nouveau. – MMM

+0

cSave.setAttribute ("onclick", "javascript: saveChange (id);"); – AnjumSKhan

+0

Oh mon diable, a été posté à un mauvais. JSP, de toute façon merci, ça marche :) – MMM

1

Emballez l'ID entre guillemets (sauf si c'est un nom variable):

document.getElementById("editBtn"); 

en jQuery il serait entre ces lignes:

var mcId = 'bla'; 

function saveChange(){ 
    alert(mcId); 
} 


$(function() { // DOM ready shorthand 


    $("#editBtn").click(function(){ 
     $(this).replaceWith("<button id='saveBtn'>Save</button>"); 
    }); 

    // Than, for your dynamically generated element use: 

    $('#parent').on('click', "#saveBtn", function(){ 
    saveChange(mcId); 
    }); 

}); 

jsBin demo

note que je utilisé pour la référence d'un élément statique non dynamique #parent. Vous devriez faire la même chose (pour éviter le collage à $(document) car il est assez cher d'écouter les événements tout le long du DOM).

jQuery .on() with event delegation for dynamically generated elements

Questions connexes