Hola, estoy tratando de completar una declaración de selección basada en otra declaración de selección. Al principio, la declaración de selección con ubicación de identificación está vacía y se completa con una llamada ajax y se reemplaza su contenido. En el cambio, quiero que cambie otra declaración de selección llamada repositorio. Estoy tratando de crear un jquery pero no se dispara. Sé que tiene que ver con la delegación de eventos, pero traté de arreglar mi código y todavía no funciona. El reemplazo está causando este problema.
¿Alguna ayuda por favor?
$.ajax({ 'url' : ajaxurl, data: { 'action':'get_locations', // This is our PHP function below }, success:function(data) { // This outputs the result of the ajax request (The Callback) $("#location").replaceWith(data); }, error: function(errorThrown){ window.alert(errorThrown); } }); //jQuery(document).on('change', location , function(){ jQuery('#location').on('change', '#location', function() { window.alert('yep'); $.ajax({ 'url' : ajaxurl, data: { 'action':'test', // This is our PHP function below }, success:function(data) { window.alert(data); }, error: function(errorThrown){ window.alert(errorThrown); } }); });Está configurando un oyente en el elemento #location , pero luego reemplaza ese elemento con el contenido de la respuesta ajax usando replaceWith() . Incluso si la llamada $ajax viene primero en el código, es asíncrona y la respuesta llegará después de que haya configurado el oyente en #location .
El método replaceWith() elimina todos los datos y controladores de eventos asociados con los nodos eliminados: https://api.jquery.com/replaceWith/
Además, el evento de cambio se activa solo para los elementos <input> , <select> y <textarea> : https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
En su lugar, podría usar un MutationObserver y observar el nodo principal del nodo que está cambiando: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver