jquery:替换 onclick 事件
jquery: Replace onclick event
我有以下代码:
$('#tableA').find("#expand_" + row_id).prop("onclick", null);
$('#tableA').find("#expand_" + row_id).prop("onclick", 'expandAndShow('+row_id+')');
$('#tableA').find("#expand_" + row_id).removeClass('icon-plus-sign');
$('#tableA').find("#expand_" + row_id).addClass('icon-ok-sign');
我想用新方法替换以前链接onlick
方法。它不起作用。但是,removeClass
和addClass
运作良好。我错过了什么吗?
使用 jQuery 删除内联属性:
$('#tableA').find('#expand_' + row_id).removeAttr('onclick');
对于IE <9,您应该使用:
.prop('onclick', null);
如文档中所述。
但是,我确实想知道为什么您将find
与ID选择器一起使用。我相信我说find
返回一个 jQ 对象数组是对的。没有一个 DOM 对象。
也许:
$('#expand_' + row_id).prop('onclick', null);
更合适。顺便说一下,要将 onclick
属性替换为另一个属性,您不需要 2 次prop
调用:
$('#expand_' + row_id).prop('onclick', 'expandAndShow('+row_id+')');
基本上通过设置另一个处理程序来删除原始onclick
处理程序。总而言之,这种事情最好使用委派来完成:
$('#tableA').on('click', '*[id^=expand_]', function()
{
alert($(this).attr('id').replace('expand_',''));
});
此代码处理 #tableA
元素的所有子元素上具有 id 的所有单击事件,这些事件以 expand_
开头。然后,我继续提醒该 id,而不使用 expand_
子字符串。
这应该有效
$('#tableA').find("#expand_" + row_id).unbind('click');
$('#tableA').find("#expand_" + row_id).on('click',expandAndShow(row_id));
相关文章:
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何调用“;链接_;在onclick事件上使用Javascript
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 选择onclick事件jquery
- 如何刷新列表框内容onclick或blur事件
- 执行php函数的onclick事件的其他替代方案
- 动态创建OnClick事件Javascript
- onClick事件未触发reactjs
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 如何使用OnClick事件通过参数调用来调用PHP函数
- 第二个事件[onClick]不起作用
- 复选框事件onclick不起作用
- 如何在jQuery中为通知添加事件onClick
- JS函数不响应事件onclick
- 使用事件onclick访问if语句Javascript中变量的值
- 如何在事件onclick中抓取文本
- 如何绑定id < light >与事件Onclick
- 未找到JS事件OnClick
- 如何在js/prototype中触发具有特定顺序的事件(onclick)
- 无法触发javascript事件OnClick的复选框