Tengo un evento de clic que llama a una función pero no funciona:
@foreach (var item in Model.OrderDetails) { <tr class="text-center" id="@item.DetailId"> <td class="product-remove" onclick="DeleteOrderDetail(@item.DetailId)"><a><span class="ion-ios-close"></span></a></td> </tr> } @section Scripts { <script> function DeleteOrderDetail(orderDetailId) { debugger; $.get("/Account/RemoveCart?orderDetailId=" + orderDetailId, function () { $("#" + orderDetailId).hide('slow'); }); </script> }error:Referencia no detectadaError: DeleteOrderDetail no está definido en HTMLTableCellElement.onclick
Una búsqueda en Internet reveló que tenía que usar addEventListener. Pero en este caso, no puedo pasar el @item.DetailId a la función.
Tienes algunos errores syntax .
No cerraste el } de tu función.
function DeleteOrderDetail(orderDetailId) { debugger; $.get("/Account/RemoveCart?orderDetailId=" + orderDetailId, function () { $("#" + orderDetailId).hide('slow'); }); } Y en esta parte de su código, debe pasar datos en '' .
<td class="product-remove" onclick="DeleteOrderDetail('@item.DetailId')"><a><span class="ion-ios-close"></span></a></td>Ya mencionamos su problema de sintaxis en los comentarios a la pregunta
Sin embargo, si lo haces
$(".product-remove").on("click", function() { const $parent = $(this).closest("tr"), detailId = $parent.attr("id"); $.get(`/Account/RemoveCart?orderDetailId=${detailId}`,function()) { $parent.hide('slow'); }); });Entonces NO hay necesidad de controladores en línea o pases de identificación
el código anterior reemplaza TODO su código publicado
Si agrega los detalles dinámicamente, debe delegar al contenedor estático más cercano
$("#tableId").on("click",".product-remove", function() { const $parent = $(this).closest("tr"), detailId = $parent.attr("id"); $.get(`/Account/RemoveCart?orderDetailId=${detailId}`,function()) { $parent.hide('slow'); }); });