2014-06-23 78 views
1

我已经做了一些关于如何将原始html按钮替换/更改为另一个的研究。但这两种方式都行不通。用jquery替换html按钮

这里是我的代码:

的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>"; 

上面的代码只是将现有的按钮内部的按钮。

HTML:

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

的mc.getId()是获得 “身份证” 的方法。

,我试过下面提及的最新方法,但它不工作:

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

和:

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

无论如何,我能做些什么来改变编辑按钮保存按钮, onclick()被执行?

+0

您已将此问题标记为[tag:jquery],那么您是否尝试过使用它? –

+0

'document.getElementById(editBtn)',IS editBtn变量? ,如果不是,那么使它成为'document.getElementById(“editBtn”)' –

+0

'#editBtn'不是按钮的ID,它调用一个函数来为ID添加一些东西。 – adeneo

回答

1

您可以编辑按钮的文本更改使用innerHTML来保存。你实际上是在按钮元素中放入一些html。尝试

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

Anjum,文本已经改变,但函数(){saveChange(id)}在再次单击时不起作用。 – MMM

+0

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

+0

哦,我的坏,发布到一个错误的.jsp,无论如何谢谢,它的工作:) – MMM

1

用引号括的ID(除非它是一个变量名):

document.getElementById("editBtn"); 

jQuery中这将是该行之间:

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

注意,我用于静态元素引用非动态#parent。你应该这样做(为了防止绑定到$(document),因为听到DOM中的所有事件都非常昂贵)。

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