2009-08-12 25 views
1

我有一张桌子,我想既是选择一行又是删除一行,但我无法弄清楚如何用JQuery做到这一点。代码我只影响表中的第一行。所以我可以删除第一行,但没有其他。哪里不对。这里是我的尝试:Jquery:在表中选择一行并使用其数据?

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $("#newCandidatesTable").tablesorter(); 
     var candidateID = $("#candidateID").text(); 

     // Event actions 
     $("#acceptCandidateButton_" + candidateID).click(function(e) { 
      $.post("/Admin/AcceptCandidate/", { candidateID: $("#candidateID").text() }, completeAccept()); 
     }); 

     // Functions 
     function completeAccept() { 
      showMsgBox($("#candidateName").text() + " er blevet accepteret, som ansøger til stillingen: ..."); 
      $("#tr_" + candidateID).remove(); 
     } 

     function getFirstNameFromFullName(fullName) { 
      var nameArray = new Array(); 

      nameArray = fullName.toString().split(" "); 

      return nameArray[0]; 
     } 
    }); 
</script> 
<h2>Nye ansøgere</h2> 
<table id="newCandidatesTable"> 
    <thead> 
     <tr> 
      <th style="cursor: pointer;">ID</th> 
      <th style="cursor: pointer;">Navn</th> 
      <th style="cursor: pointer;">Email</th> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
<% foreach (var candidate in Model) 
{ 
    %> 
     <tr id="<%= "tr_" + candidate.iAnsogerID %>"> 
      <td><div id="candidateID"><%= candidate.iAnsogerID %></div></td> 
      <td><div id="candidateName"><%= candidate.vNavn %></div></td> 
      <td><div id="candidateEmail"><%= candidate.vEmail %></div></td> 
      <td> 
       <div id="<%= "acceptCandidateButton_" + candidate.iAnsogerID %>" style="cursor: pointer; border: 1px solid black; width: 150px; text-align: center;">Godkend</div> 
      </td> 
     </tr> 
    <% 
} %> 
</tbody> 
</table> 

回答

1

我认为你需要将你的事件连接包装在foreach中迭代你拥有的物品的集合。

$("#candidateID").each(function() { 
    // Event actions 
    var candID = this.text; 
    $("#acceptCandidateButton_" + candID).click(function() { 
    $.post("/Admin/AcceptCandidate/", { candidateID: candID }, completeAccept()); 
    }); 
}); 

我还没有机会测试这个,但如果没有别的它应该让你在正确的轨道上。

我猜你也可以在你的页面生成循环做到这一点直接,即:

<td> 
    <div id="<%= "acceptCandidateButton_" + candidate.iAnsogerID %>" style="cursor: pointer; border: 1px solid black; width: 150px; text-align: center;" onclick="$.post("/Admin/AcceptCandidate/", { candidateID: " + candidate.iAnsogerID + " }, completeAccept())">Godkend</div> 
</td> 
0

你正在创建<div id="candidateID">你的循环(与其他两个div s表示与它一起去),所以你重用该id =”候选人ID“属性为你有每个候选人,这是肯定会破坏的东西。在这种情况下,jQuery(和底层浏览器,当然)选择只识别第一个这样的字段,因此您只能删除第一行。

的代码,不会实际移除该生产线是正确的:

$("#tr_" + candidateID).remove(); 

你只需要确保candidateID设置的东西,是有道理的。没有更多的上下文,我不确定那会是什么。

0

你实际上并不需要任何插值到选择删除的TR,例如,这将工作:

$("#acceptCandidateButton_" + candidateID).click(function(e) { 
     $.post("/Admin/AcceptCandidate/", { candidateID: $("#candidateID").text() }, completeAccept($(this)); 
    }); 

    // Functions 
    function completeAccept(context) { 
     showMsgBox($("#candidateName").text() + " er blevet accepteret, som ansøger til stillingen: ..."); 
     context.parent().parent().remove(); 
    } 
相关问题