C# JQuery未识别单击表行

C# JQuery未识别单击表行,c#,jquery,asp.net-mvc,asp.net-mvc-3,C#,Jquery,Asp.net Mvc,Asp.net Mvc 3,我正在使用JQuery模板处理我的表的数据。。。CSS会识别查询模板脚本中的表行,并按照我的要求设置它们的样式。。。但由于某些原因,我无法调用$()。请单击使用相同标识符的相同行。以下是表格代码: <script id="donorTemplate" type="text/x-jquery-tmpl"> <tr id="indexTR"> <td>${Person.LastName}, ${Person.FirstName}</td>

我正在使用JQuery模板处理我的表的数据。。。CSS会识别查询模板脚本中的表行,并按照我的要求设置它们的样式。。。但由于某些原因,我无法调用$()。请单击使用相同标识符的相同行。以下是表格代码:

<script id="donorTemplate" type="text/x-jquery-tmpl">
<tr id="indexTR">
    <td>${Person.LastName}, ${Person.FirstName}</td>
    <td>${Address.Address1}</td>
    <td>${PhoneContact.PhoneNumber}</td>
    <td>${EmailContact.EmailContactx}</td>
    <td>${Company.CompanyName}</td>
    <td><a href="/Donation/Index?id=${Person.PersonID}">Add Donation</a></td>
    <td> <a href="/Person/Edit?id=${Person.PersonID}">Edit</a> &nbsp; <a href="/Person/Delete?    
id=${Person.PersonID}">Delete</a> &nbsp;
        <input type="hidden" id="hiddenField" value="${Person.PersonID}"/>
    </td> 
</tr>
</script>

<div id="searchresults">
<table id="donor-list">
<thead>
<tr>
    <th id="f" width="150">Name: </th>
    <th width="180">Address: </th>
    <th width="85">Phone: </th>
    <th width="150">Email: </th>
    <th width="100">Company: </th>
    <th width="100"></th>
    <th id="l" width="100"></th>
</tr>
</thead>
<tbody id="tableBody">

</tbody>
</table>
那都是花花公子。。。但这不起作用:

$("#indexTR").click(function () {
       alert('test');
    });
这就是我在TR点击时尝试做的:

var val = $("#hiddenField").val();
var personID = parseInt(val);
location.href = "/Person/Details?id=" + personID;
在我切换到JQuery模板之前,它一直有效。有什么建议吗?谢谢

准备就绪时,
在DOM中不存在,因此使用委托事件应该可以做到:

$('#donor-list').on('click', '#indexTR', function(){
    alert('test');
});
对于jQuery 1.5:

$('#donor-list').delegate('#indexTR', 'click', function(){
    alert('test');
});
或在每次新创建行时附加回调。

$.getJSON(form.attr("action"), form.serialize(), function (data) {
        $("#tableBody #indexTR").remove();
        $("#donorTemplate").tmpl(data).appendTo("#tableBody");
        // Now attach the event:
        $("#indexTR").click(function () {
           alert('test');
        });
    });

您遇到了多个元素具有相同的
id
的问题。正如您的问题评论中所讨论的。

等待。。。是否有多个元素具有相同的
indexTR
id?我想。。。因为我每次都会用不同的数据将该行追加到表中。。。但是在我使用模型在@foreach中使用相同的表行之前,不是JQuery模板,而是对每一行进行单击…所以从id到类的HTML更改无效!我想我的答案应该对你有帮助。试着把它指向全班。。。这似乎不起作用。这是第一阶段,结合我的回答。警报有效(谢谢!)。。。但这仍然不起作用$(“#捐赠者列表”).delegate(“#indexTR”,“click”,function(){var val=$(“#hiddenField”).val();var personID=parseInt(val);location.href=“/Person/Details?id=“+personID;”);它不是在每行中找到隐藏字段吗?嗯。。。我不应该说它不起作用。。。但无论我点击哪一行,它总是重定向到同一页。@redBarron。当然是这样,您使用
id
选择器,这意味着它将获取第一个元素,您在那里也得到了无效的标记@雷德巴伦。无论如何,它可以这样修复:
$('hiddenField',this).val()
。但是您仍然有无效的标记。
$.getJSON(form.attr("action"), form.serialize(), function (data) {
        $("#tableBody #indexTR").remove();
        $("#donorTemplate").tmpl(data).appendTo("#tableBody");
        // Now attach the event:
        $("#indexTR").click(function () {
           alert('test');
        });
    });