我正在创建这样的表:
<table>
<tr>
<th>Column</th>
</tr>
@foreach (var item in someList)
{
foreach (var item1 in item)
{
<tr>
<td onclick="myMethod();">@item1.name</td>
</tr>
}
}
</table>
以下是选择行时调用的方法:
<script type="text/javascript" language="javascript">
function myMethod() {
var clickedCell = $(this);
alert(clickedCell.text());
}
</script>
但它不起作用!如何从选择/单击的行/单元格中获取文本?
我也尝试过:
<script type="text/javascript" language="javascript">
function myMethod() {
alert($(this).html());
}
</script>
并且它让我无效,表格已经满了。
答案 0 :(得分:1)
我从这一行推断你正在使用jQuery:
var clickedCell = $(this);
如果是这种情况,让我们暂时退一步,将您的JavaScript与HTML分开。而不是:
<td onclick="myMethod();">@item1.name</td>
有内嵌JavaScript(通常不赞成),尝试这样的事情:
<td class="clickableCell">@item1.name</td>
现在它只是标记,这有点清洁。接下来,您需要将点击事件附加到渲染的单元格:
$(document).ready(function() {
$('td.clickableCell').click(function() {
alert($(this).text());
});
});
现在this
指的是jQuery绑定click事件的元素,因此可以在代码中轻松引用它,而不必传递来自click事件中绑定的click事件的自引用。 HTML(这是另一种方法,但继续将标记与代码混合)。