我已经创建了一个js文件,其中我正在创建动态表并动态更改日历的单击事件,但单击日历图像以动态生成表,日历弹出在先前的日历图像中。请帮帮我
代码
/***------------------------------------------------------------
*
*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');
}
});
});
字符串
7条答案
按热度按时间hk8txs481#
您可以轻松地使用jQuery更改元素的
onclick
事件,而无需使用以下命令运行新函数:字符串
通过编写这一行,您实际上更改了
#id
的onclick
属性。您还可以用途:
document.getElementById("id").attribute("onclick","new_function_name()");
个oalqel3c2#
移除旧的事件处理程序
字符串
然后把新的接上
型
thtygnil3#
更新此文章(2015):unbind/bind不应该再在jQuery 1.7+中使用。使用函数off()。示例如下:
字符串
请确保在.click中调用了非参数函数,否则它将被忽略。
idv4meu84#
第一个月
现在(2015年7月11日)这个解决方案仍然有效(jquery 2.1.4);在我看来,这是最好的一个拿起。
wtlkbnrh5#
如果你想用jQuery改变一个特定的onclick事件,你最好使用带有命名空间的函数.on()和.off()(参见文档)。
使用
.on()
创建事件,使用.off()
删除事件。你也可以创建一个像g_specific_events_set = {};
这样的全局对象来避免重复:h9a6wy2h6#
(2019)我用了
$('#'+id).removeAttr().off('click').on('click', function(){...});
我尝试了
$('#'+id).off().on(...)
,但是每次调用onClick属性重置它时都无法重置它。我使用
.on('click',function(){...});
是为了避免我所有的JavaScript函数都被引用。O.P.现在可以用途:
$(this).removeAttr('onclick').off('click').on('click', function(){ displayCalendar(document.prjectFrm[ia + 'dtSubDate'],'yyyy-mm-dd', this); });
个这是在我的div被静态设置了onClick属性时发生的:
<div onclick = '...'>
个否则,如果我只有一个动态附加的侦听器,我会使用
$('#'+id).off().on('click', function(){...});
。没有off('click '),我的onClick监听器被附加而不是被替换。
zzzyeukh7#
@Amirali
字符串
投掷:
型
在 chrome 。
元素存在并转储到控制台中;