我有以下代码:
HTML
<tr>
<td onclick="ThingClicked()">click me</td>
</tr>
JS:
function ThingClicked(event) {
var row = event.currentTarget.parent("tr");
callAnotherDOMManipulatingFunction(row);
}
由于某种原因,event.currentTarget未定义。我试过'这个',但那也是未定义的。这是怎么回事?如何获取包含此td的行?
答案 0 :(得分:5)
好吧,既然你包含了一个jQuery标签(并包含了jQuery文档的链接),我会告诉你这是怎么回事。
修改强>
jQuery live() docs
jQuery clone() docs
编辑:添加了jQuery的ready()函数。您将始终将代码放在内部,如图所示。
$('document').ready(function() {
$('td').click(function() {
var row = $(this).closest('tr');
callAnotherDOMManipulatingFunction(row);
});
});
当然,这会将click事件附加到每个td标记,但是你明白了。
编辑:
进一步解释。使用jQuery时,通常会在javascript中分配事件,而不是HTML。分配给'td'会将click事件提供给页面上的每个'td'标记,因此您可能会给'td'一个类并使用它来附加事件,例如:
$('.myFreakingAwesomeClass').click(function() {
...
});
您通常不需要引用“事件”,但有时会派上用场。
答案 1 :(得分:1)
试试这个:
<tr>
<td onclick="javascript:ThingClicked(this);">click me</td>
</tr>
function ThingClicked(td) {
callAnotherDOMManipulatingFunction(td.parentNode);
}
答案 2 :(得分:0)
更改您的代码:
<强> HTML 强>
<tr>
<td onclick="ThingClicked(this)">click me</td>
</tr>
<强> JS:强>
function ThingClicked(element) {
callAnotherDOMManipulatingFunction(element);
}
答案 3 :(得分:0)
试试这个:
<tr>
<td onclick="ThingClicked(event)">click me</td>
</tr>
使用处理函数的输入参数,特别称为event
,而不是其他任何内容。