Не может получить динамическое значение таблицы td, используя jquery

Я пытаюсь получить значение TD из динамически создаваемой таблицы, когда кнопка нажата, вот моя таблица:

<tbody>
@foreach (var item in Model)
{
    <tr>
        <td id="Quantity">
            @Html.DisplayFor(modelItem => item.Quantity)
        </td>
       <td>
            <button type="button" class="btn btn-sm btn-info btnupdate" onclick="Update(@item.Id);">
               Update
            </button>
        </td>                            
    </tr>
}</tbody>

вот мой jquery:

            function update(id) {

            var Id = id;

            var quantity = $(Quantity).html().trim();//get only first td value for every tr
            var quantity = $(Quantity).text().trim();//get every td value 
            var quantity = $(this).closest("tr").find("#Quantity").text().trim(); //undefined
            var quantity = $('#Quantity').attr("value") //undefined


        }

Я не могу понять эту проблему. любая помощь будет принята с благодарностью.

2 ответа

Решение

Вы можете просто пройти item.Quantity непосредственно, который может быть принят в качестве параметра.

<button onclick="Update(@item.Id,@item.Quantity);">.....</button>

Однако я бы порекомендовал вам использовать ненавязчивый обработчик событий, используя .on(eventType, handler) метод. приписывать @item.Id на заказ data-* атрибут, который можно получить с помощью .data(key),

Тогда можно использовать различные методы обхода DOM

    <tr>
        <td class="Quantity">
            @Html.DisplayFor(modelItem => item.Quantity)
        </td>
       <td>
            <button type="button" class="btn btn-sm btn-info btnupdate" data-id="@item.Id" >
               Update
            </button>
        </td>                            
    </tr>

скрипт

$('.btnupdate').on('click', function(){
    var id = $(this).data('id');
    var qty = $(this).closest('tr').find('Quantity').text();
});

Ваш id для каждого td должно быть уникальным и что вы можете достичь, просто добавив item.Id:-

<td id="@("quantity" + item.Id)"> 

и тогда вы можете получить к нему доступ, как вы уже делаете,

function update(id) {
    var quantity = $('#quantity' + id).html().trim();
    alert(quantity);
}
Другие вопросы по тегам