2017-09-12 53 views
1

我有一個通過剃刀語法顯示錶無法從TD文本(ASP.NET MVC)

這裏是代碼

@foreach (var item in Model) 
{ 
    <tr> 
     <td class="point"> 
      @(rowNo += 1) 
     </td> 
     <td class="title"> 
      @Html.DisplayFor(modelItem => item.Date_of_Birthday) 
     </td> 
     <td id="name" class="title"> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td class="title"></td> 
     <td class="title"></td> 
     <td class="title"></td> 
     <td style="text-align: end;"> 
      <img id="delete_pt" src="~/images/icons8-Delete-50.png"/> 
      <img src="~/images/doc-50.png"/> 
     </td> 
    </tr> 
} 

我想方設法把

<td id="name" class="title"> 
    @Html.DisplayFor(modelItem => item.Name) 
</td> 

通過價值JS

這裏的代碼是

<script> 
$(document).on('click', '#delete_pt', function() { 
    var title = $(this).find('#name').html(); 
    console.log(title); 
}); 

但是,當我點擊我沒有得到它的價值是空的。我的錯誤在哪裏?

回答

3

你的元素是<img>,它不包含任何的子元素。您需要找到父項<tr>元素,然後找到<td id="name">元素。

$(document).on('click', '#delete_pt', function() { 
    var title = $(this).closest('tr').find('#name').html(); 
    console.log(title); 
}); 

但是,您的循環正在生成重複的id屬性,這是無效的HTML。您需要替換與類名的id屬性,例如

<td class="name title"> 
    @Html.DisplayFor(modelItem => item.Name) 
</td> 
.... 
<img class="delete_pt" src="~/images/icons8-Delete-50.png" /> 

然後用

​​3210
+0

它的工作原理,但我得到它與HTML和我只需要得到的價值 –

+0

然後使用'.text()' –

+0

它也得到它與標記太 –

0

我相信你需要將它與id="delete_pt"改變

@Html.DisplayFor(item=> item.Date_of_Birthday) 
0

你可以簡單地傳遞item.name作爲值的JS

<img id="delete_pt" src="~/images/icons8-Delete-50.png" onclick="deletePT(@item.Name)"/> 

並給yout添加一個函數JS: (刪除onclick事件)

function deletePT(itemname){ 
console.log(itemname); 
} 

您的代碼會爲HTML中的多個元素生成一個ID值 - 這並不好。但這不是問題的問題

+0

你找到答案了嗎? – roee58