Добавление кнопки сведений в динамический список HTML

У меня есть список HTML, который создается динамически с использованием отфильтрованных данных.

<tbody>
            @{
                foreach (var item in listado.Where(x => x.Raw != null)) {
                    <tr>
                        <td>@item.Id</td>
                        <td>@item.Usuario</td>
                        <td>@item.NIF_CIF</td>
                        <td>
                            @if (!(String.IsNullOrEmpty(item.Telefono)) && !(String.IsNullOrWhiteSpace(item.Telefono))) {
                                @item.Telefono
                            } else {
                                @Html.Raw("No disponible")}
                        </td>
                        <td>@Math.Round(item.PrecioTotal)&nbsp;&euro;</td>
                        <td>@item.FechaCreacion.ToShortDateString()</td>
                        <td>
                            <button id = "detalles@(item.Id)">Detalles</button>
                        </td>
                    </tr>
                    <tr id = "vistaDetalles@(item.Id)" hidden>
                        <td>Detalles del presupuesto</td>
                    </tr>
                }
            }
        </tbody>

Я попытался пометить кнопку, как вы можете видеть, используя item.Id, а затем указать на нее в этом скрипте:

<script>
$("document").ready(function (Id) {
    $("#detalles"+ Id).click(function (Id) {
        $("#vistaDetalles" + Id).show();
    });
});</script>

Я также пытался не помечать их и ловить все кнопки (удаляя часть + Id), и тот же метод, чтобы поймать все скрытые tds, но ничего не работает. Что я делаю не так? Кроме того, не могли бы вы порекомендовать какой-нибудь учебный материал, чтобы я мог прояснить эту часть? Заранее спасибо. С Уважением.

ваш сценарий полностью неверен для некоторых аспектов, удалите идентификатор из функции document.ready. Замените $ ("# detalles" + Id) .click (function (Id) на $ (document) .on ("click", "id ^ = detalles", function () {

Dhiren 24.08.2018 14:22

Это тоже не работает. Я знаю, что не пристегиваю ни кнопки, ни tds правильно, но не знаю, как это сделать правильно.

dCarMal 24.08.2018 14:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
68
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй:-

<script>
$("document").ready(function (Id) {
    $("body").on("click","#detalles"+ Id, function (Id) {
        $("#vistaDetalles" + Id).show();
    });
});</script>

Я бы заменил твою кнопку на

<button onclick = "detalles(@item.Id)">Detalles</button>

И измените свой JavaScript на:

<script>
    function detalles(Id) {
        $("#vistaDetalles" + Id).show();
    };
</script>

Спасибо за ваш ответ. Я пробовал и не получилось, но выглядит многообещающе. Может у меня еще где-то ошибка?

dCarMal 24.08.2018 14:52

Попробуйте заменить $ ("# vistaDetalles" + Id) .show () на $ ("# vistaDetalles" + Id) .removeAttr ('hidden'). Но имейте в виду, что вы не скрываете их после того, как они были показаны. Поэтому, если вы нажмете на подробности нескольких записей, они все будут отображаться.

rBalzer 24.08.2018 15:09
Ответ принят как подходящий

Для этого можно использовать атрибуты данных.

HTML

<button class = "detalles" data-itemid = "@item.Id">Detalles</button>

jQuery

$(".detalles").on("click",function(){
   var itemId = $(this).data('itemid');
   $('#vistaDetalles'+itemId).show();
});

Большое спасибо за ответ. Это действительно сработало, но только для первой кнопки списка. Не знаю, в чем ошибка, но еще раз спасибо.

dCarMal 24.08.2018 14:56

@dCarMal, это потому, что идентификатор должен быть таким же, пока вы выполняете итерацию. Измените id = "detalles" на class = "detalles". Позвольте мне обновить ответ через мгновение. Я забыл представить, что

Manoz 24.08.2018 15:01

@dCarMal, проверьте сейчас

Manoz 24.08.2018 15:02

Вот и все! Большое спасибо, что решили проблему. Теперь каждая кнопка перемещает нужное мне поле с подробностями. Еще раз спасибо и спасибо всем за вашу поддержку.

dCarMal 24.08.2018 15:09

Другие вопросы по теме