Estoy tratando de ejecutar un bucle simple en la página del carrito de WooCommerce. Cuando la página se carga inicialmente, la función hace su trabajo, pero al actualizar el carrito, pierde vida.
Aquí está mi función de bucle:
let radios = document.querySelectorAll( 'input[name="radio_options_set"]' ); simplySetAttrs(); function simplySetAttrs() { // I started the var at 1 to skip the first radio input for (var xx = 1; xx < radios.length; xx++) { radios[xx].setAttribute( 'onclick', 'dothisFunction( this );' ); } }El único evento de WooCommerce que ha mostrado alguna respuesta es 'updated_cart_totals' y los botones de radio a los que me dirijo en la página del carrito están insertados por otro complemento.
Así es como lo implementé:
jQuery( document.body ).on( 'updated_cart_totals', simplySetAttrs() );No puedo entender por qué el bucle muy básico no entra en acción. Si hago una alerta (), funciona como se esperaba, incluso después de configurar un tiempo de espera.
También intenté agregar diferentes detectores de eventos como alternativa a la configuración de los atributos, pero fue en vano.
Puede usar jQuery attr para establecer el atributo. Pruebe el siguiente código.
let radios = document.querySelectorAll( 'input[name="convert_to_sub"]' ); simplySetAttrs(); function simplySetAttrs() { // I started the var at 1 to skip the first radio input for (var xx = 1; xx < radios.length; xx++) { jQuery(radios[xx]).attr( 'onclick', 'dothisFunction( this );' ); } }