我有一个带有<tr>
的表,其中有ew个<input>
元素,在设计时声明了onchange
事件,但是从数据库中动态填充。 <td >
的HTML如下所示:
<td scope="col" style="width: 60px; font-weight: normal;">
<input type="text" id="hall_name" name="hall_name" class="form-control" onchange="rowEdited($(this).parent())" value=<%=hallName %> ></input>
</td>
<td scope="col" style="width: 50px; font-weight: normal; text-align: center">
<input type="text" style="text-align: center" id="hall_capacity" name="hall_capacity" onchange="rowEdited($(this).parent())" class="form-control" value=<%=hallCapacity %>></input>
</td>
<td scope="col" style="width: 75px; font-weight: normal; text-align: center">
<input type="text" id="hall_location" name="hall_location" onchange="rowEdited($(this).parent())" class="form-control" value=<%=hallLocation%>></input>
</td>
克隆最后一个
<tr>
后,我试图从最后一个onchange
中的所有输入中删除<tr>
事件,但是它不起作用。克隆最后一个
<tr>
的js代码如下:var row = $('#hallTable tr:last');
var new_row = $(row).clone(false,false).off();
我到目前为止尝试过的Javascript代码是这样的
$('#hallTable tr:last').find("*").off();
和
$('#hallTable tr:last').find(':input').each(function(){
$(this).unbind('onchange', rowEdited);
})
$('#hallTable tr:last').find('input:checkbox').each(function(){
$(this).unbind('onchange', rowEdited);
和
$('#hallTable tr:last').find('input').onchange = null;
和
$('#hallTable tr:last').find('input').unbind('onchange', 'rowEdited');
但是没有一个工作。请指教。
最佳答案
jQuery .off()
或unbind
函数仅删除使用jQuery添加的事件侦听器。他们不会删除内联事件列表器(如onchange="rowEdited($(this).parent())"
)。
要删除与onchange
匹配的所有项目的内联事件列表器$('#hallTable tr:last').find('input')
,您需要编写:
$('#hallTable tr:last').find('input').each(function() {
this.onchange = null;
})
通常,您根本不应该使用内联事件。使用
addEventListener
,或者如果要使用jQuery,请使用.on()
。关于javascript - js .off()在<tr>元素上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48973194/