Не удается получить текст из td (ASP.NET MVC)

1

У меня есть таблица, отображающая синтаксис Razor

Вот код

@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>

Via JS

Вот код

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

Но когда я нажимаю, я не получаю значение, он пуст. Где моя ошибка?

Теги:
asp.net-mvc

3 ответа

3
Лучший ответ

Ваш элемент с id="delete_pt" является <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" />

а затем использовать

$(document).on('click', '.delete_pt', function () {
    var title = $(this).closest('tr').find('.name').html();
    console.log(title);
});
  • 0
    Это работает, но я получаю это с HTML, и мне нужно получить только значение
  • 0
    Затем используйте .text()
Показать ещё 7 комментариев
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);
}

Ваш код генерирует значение ID более чем одному элементу в HTML - это плохо. но это не проблема проблемы

  • 0
    ты нашел ответ?
0

я считаю, вам нужно изменить его на

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню