El selector de clase de jQuery no funciona después de la actualización a .NET 5.
Estoy trabajando en una actualización de .NET5 y mientras actualizo el código, me di cuenta de que mi selector de jQuery para las clases no está funcionando. Es un proyecto MVC con páginas Razor.
En mi vista, tengo mi script en la parte superior y llamo a los elementos del menú con etiquetas de anclaje:
<script src="~/menu.js" type="text/javascript"></script>
<a href="#" class="menu-pop create_new_project" data-position="right" data-content="New Project" id="new-project">
<i class="fa fa-edit"></i>
<span>New Project</span>
</a>
Luego, en mi archivo menu.js se llama así:
$('.create_new_project').on('click', function (e) { ...hacer algo });
Actualización
Acabo de descubrir que si redirijo a otra página, se activa. Puedo confirmar que el script está presente cuando se ve el menú. Además, no hay errores en la consola del desarrollador. Realmente no estoy seguro de lo que estoy haciendo mal.
Intenté usar el ID en lugar de la clase y agregar selectores:
$('#new-project').on('click', function (e) { ...hacer algo });
$('#new-project').on('click', 'a', function (e) { ...hacer algo });
El problema persistió.
Está cargado en el DOM.
davy.ai
Como experto en TI especializado en jQuery y ASP.NET5, hay algunas cosas que podemos investigar para resolver el problema del selector de jQuery que no funciona en el proyecto MVC con Razor Pages:
Verificar si hay conflictos con otras bibliotecas o scripts de JavaScript en la página. Esto se puede hacer eliminando temporalmente todos los demás scripts y probando si el selector de jQuery funciona como se espera.
Verificar que la sintaxis del selector sea correcta. En el código dado, el selector es
$('.create_new_project')
. Sin embargo, en el código HTML, podemos ver que el nombre de la clase escreate_new_project
y nocreate_new_project
. Podemos intentar cambiar el selector de jQuery a$('.create_new_project')
y ver si funciona.Comprobar si hay eventos que puedan evitar que se dispare el evento de clic en la etiqueta del ancla. Por ejemplo, si hay otro script que enlaza un evento de clic al mismo elemento, podría interferir con el selector de jQuery. En este caso, podemos intentar desenlazar cualquier evento de clic existente antes de enlazar nuestro propio evento de la siguiente manera:
on()
de jQuery para delegar el evento a un elemento padre. Esto es útil al agregar o eliminar elementos dinámicamente en la página. Por ejemplo:Aquí, en lugar de enlazar el evento de clic directamente a la etiqueta del ancla, lo enlazamos al elemento de documento y lo delegamos a cualquier elemento con la clase
create_new_project
que exista o se agregue a la página más tarde.Al probar estos pasos de depuración, deberíamos poder identificar y resolver el problema con el selector de jQuery que no funciona en la actualización .NET5.