如何改变与jQuery的onclick事件?

我已经创build了一个js文件,我在其中创builddynamic表并dynamic更改日历的点击事件,但是点击日历图像中的dynamic生成的日历popup窗口的日历图像。 请帮帮我

/***------------------------------------------------------------ * *Developer: Vipin Sharma * *Creation Date: 20/12/2010 (dd/mm/yyyy) * *ModifiedDate ModifiedBy Comments (As and when) * *-------------------------------------------------------------*/ var jq = jQuery.noConflict(); var ia = 1; jq(document).ready(function(){ jq("#subtaskid1").click(function() { if(ia<=10){ var create_table = jq("#orgtable").clone(); create_table.find("input").each(function() { jq(this).attr({ 'id': function(_, id) { return ia + id }, 'name': function(_, name) { return ia + name }, 'value': '' }); }).end(); create_table.find("select").each(function(){ jq(this).attr({ 'name': function(_,name){ return ia + name } }); }).end(); create_table.find("textarea").each(function(){ jq(this).attr({ 'name': function(_,name){ return ia + name } }); }).end(); create_table.find("#f_trigger_c").each(function(){ var oclk = " displayCalendar(document.prjectFrm['"+ ia +"dtSubDate'],'yyyy-mm-dd', this)"; //ERROR IS HERE var newclick = new Function(oclk); jq(this).click(newclick); }).end(); create_table.appendTo("#subtbl"); jq('#maxval').val(ia); ia++; }else{ var ai = ia-1; alert('Only ' + ai + ' SubTask can be insert'); } }); }); 

你可以很容易地改变一个elemt的事件由jquery没有运行新的function

 $("#id").attr("onclick","new_function_name()"); 

通过写这一行,你实际上改变了#id的属性。

你也可以使用

document.getElementById("id").attribute("onclick","new_function_name()");

删除旧的事件处理程序

 jQuery('#id').unbind('click'); 

并附上新的

 jQuery('#id').click(function(){ // your code here }); 

更新这个post(2015年):解除/绑定不应该再用jQuery 1.7+。 改用off()函数。 例如:

 $('#id').off('click'); $('#id').click(function(){ myNewFunction(); //Other code etc. }); 

请确保您在.click中调用非参数函数,否则将被忽略。

$('#id').attr('onclick', 'function()');

现在(2015年7月11日)这个解决scheme还在工作(jquery 2.1.4); 在我看来,这是最好的select。

如果你想用jQuery改变一个特定的onclick事件,你最好使用函数.on()和.off()以及一个命名空间(见文档)。

使用.on()创build事件,使用.on()将其删除。 您也可以创build一个全局对象,如g_specific_events_set = {}; 避免重复:

 $('#alert').click(function() { alert('First alert!'); }); g_specific_events_set = {}; add_specific_event = function(namespace) { if (!g_specific_events_set[namespace]) { $('#alert').on('click.' + namespace, function() { alert('SECOND ALERT!!!!!!'); }); g_specific_events_set[namespace] = true; } }; remove_specific_event = function(namespace) { $('#alert').off('click.' + namespace); g_specific_events_set[namespace] = false; }; $('#add').click(function(){ add_specific_event('eventnumber2'); }); $('#remove').click(function(){ remove_specific_event('eventnumber2'); }); 
 div { display:inline-block; vertical-align:top; margin:0 5px 1px 5px; padding:5px 20px; background:#ddd; border:1px solid #aaa; cursor:pointer; } div:active { margin-top:1px; margin-bottom:0px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="alert"> Alert </div> <div id="add"> Add event </div> <div id="remove"> Remove event </div> 

@Amirali

 console.log(document.getElementById("SAVE_FOOTER")); document.getElementById("SAVE_FOOTER").attribute("onclick","console.log('c')"); 

抛出:

 Uncaught TypeError: document.getElementById(...).attribute is not a function 

在铬。

元素存在并被转储到控制台中;