如何使用jQuery更改onclick事件?

fd3cxomn  于 2023-08-04  发布在  jQuery
关注(0)|答案(7)|浏览(128)

我已经创建了一个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');
        }
    });
});

字符串

hk8txs48

hk8txs481#

您可以轻松地使用jQuery更改元素的onclick事件,而无需使用以下命令运行新函数:

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

字符串
通过编写这一行,您实际上更改了#idonclick属性。
您还可以用途:
document.getElementById("id").attribute("onclick","new_function_name()");

oalqel3c

oalqel3c2#

移除旧的事件处理程序

$('#id').off('click');

字符串
然后把新的接上

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

thtygnil

thtygnil3#

更新此文章(2015):unbind/bind不应该再在jQuery 1.7+中使用。使用函数off()。示例如下:

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

字符串
请确保在.click中调用了非参数函数,否则它将被忽略。

idv4meu8

idv4meu84#

第一个月
现在(2015年7月11日)这个解决方案仍然有效(jquery 2.1.4);在我看来,这是最好的一个拿起。

wtlkbnrh

wtlkbnrh5#

如果你想用jQuery改变一个特定的onclick事件,你最好使用带有命名空间的函数.on().off()(参见文档)。
使用.on()创建事件,使用.off()删除事件。你也可以创建一个像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>
h9a6wy2h

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监听器被附加而不是被替换。

zzzyeukh

zzzyeukh7#

@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


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

相关问题