使用on()方法获取当前对象
Get current object with the on() method
如何更新调用事件"change"的当前行的特定输入?
这是我的脚本:
$('#absence-table').on('change', '.from input, .to input',function() {
var from = $('.from input').val();
var to = $('.to input').val();
if (from != "" && to != "")
{
d1 = getTimeStamp(from);
d2 = getTimeStamp(to);
if(d1 <= d2)
{
$('.result input').val(new Number(Math.round(d2 - d1)+1));
}
else
{
$('.result input').val(0);
}
}
});
HTML:
<table class="table table-bordered" id="absence-table">
<tr>
<th>Absence type</th>
<th>From</th>
<th>To</th>
<th>Days requested</th>
<th>Morning</th>
<th>Afternoon</th>
<th colspan="2">Comment</th>
</tr>
<tr class="main-abs-line">
<td>
<select name="absence-type" class="input-small">
<option value="t1">type1</option>
<option value="t2">type2</option>
</select>
</td>
<td class="from"><input type="text" class="input-small" /></td>
<td class="to"><input type="text" class="input-small" /></td>
<td class="result"><div class="text-center"><input type="text" class="input-xsmall" /></div></td>
<td class="morning"><div class="text-center"><input type="checkbox"></div></td>
<td class="afternoon"><div class="text-center"><input type="checkbox"></div></td>
<td colspan="2"><input type="text" /></td>
</tr>
// some tr added by the append() method
当前,只有第一行的结果输入被更新,当前结果输入是从第一行复制的。这很奇怪,因为".from input"answers".to input"中的值是正确的(当前行的值)。
通常我使用$(this)来获取当前对象,但使用on()方法我不知道该怎么做
我相信这就是您想要的:
$('#absence-table').on('change', '.from input, .to input',function() {
$tr = $(this).closest("tr");
var from = $tr.find('.from input').val();
var to = $tr.find('.to input').val();
if (from != "" && to != "")
{
d1 = getTimeStamp(from);
d2 = getTimeStamp(to);
if(d1 <= d2)
{
$tr.find('.result input').val(new Number(Math.round(d2 - d1)+1));
}
else
{
$tr.find('.result input').val(0);
}
}
});
这假设您有几个包含.to
、.from
和.result
的tr
,并且当更新.to
或.from
时,您希望更新同一tr
中的.result
。
您可以通过传递事件来使用event.target
来实现
实时演示
function(event){
alert(event.target.id);
你的代码是
$('#absence-table').on('change', '.from input, .to input',function(event) {
alert(event.target.id);
//your code
});
如果(根据您的评论)您想要为触发change
事件的任何元素提供封闭的tr
,只需使用:
var $tr = $(this).closest('tr');
在事件处理程序中,this
对应于触发元素,即使使用委托的事件处理程序也是如此。
相关文章:
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 如何在JavaScript中基于事件对象获取文件名
- 使用Lodash从JSON对象获取特定于环境的配置
- 从每个父对象获取attr,并为每个子对象设置attr
- 使用javascript从json对象获取父名称
- 从express请求对象获取客户端MAC地址
- 正在从JSON对象获取数组
- 使用生成的键从对象获取数据
- 如何在 C# 中从 JavaScript 对象获取值
- JavaScript |对象:获取属性忍者移动
- 从 CasperJS 中的嵌套 JavaScript 对象获取值
- 从 JSON 对象获取数据时出现问题
- Angularjs 从范围对象获取值
- 以点表示法计算字符串,以从视图中的对象获取相应的值
- 如何测试从promise对象获取数据的控制器
- Javascript-在for循环上从var中的对象获取适当性
- 在javascript中从json对象获取数据
- 如何从每个对象获取jQuery的“title”和“url”值
- 从react routers browserHistory对象获取当前页面路径
- 从Javascript对象获取CSV值