neb*_*ula 5 javascript jquery jquery-ui
我有以下代码:
$('#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');
Run Code Online (Sandbox Code Playgroud)
我想onlick用新方法替换以前链接的方法。它不起作用。但是,removeClass并且addClass运行良好。我有什么想念的吗?
要使用jQuery删除内联属性:
$('#tableA').find('#expand_' + row_id).removeAttr('onclick');
Run Code Online (Sandbox Code Playgroud)
只是这样做,对于IE <9,您应该使用:
.prop('onclick', null);
Run Code Online (Sandbox Code Playgroud)
如文档中所述。
但是,我确实想知道为什么要使用findID选择器。我相信我的说法是正确的,它find返回一个jQ对象数组。不是单个DOM对象。
也许:
$('#expand_' + row_id).prop('onclick', null);
Run Code Online (Sandbox Code Playgroud)
比较合适。要将onclick属性替换为另一个属性,prop顺便说一句,您不需要两个调用:
$('#expand_' + row_id).prop('onclick', 'expandAndShow('+row_id+')');
Run Code Online (Sandbox Code Playgroud)
基本上是通过设置另一个处理程序来删除原始onclick处理程序。总而言之,最好使用委托来完成这种事情:
$('#tableA').on('click', '*[id^=expand_]', function()
{
alert($(this).attr('id').replace('expand_',''));
});
Run Code Online (Sandbox Code Playgroud)
此代码处理元素的所有子元素上#tableA具有ID的所有click事件(以开头)expand_。然后,我继续提醒该ID,不expand_带子字符串。
| 归档时间: |
|
| 查看次数: |
8475 次 |
| 最近记录: |