Creé el siguiente código javascript que agrega una nueva fecha y hora al hacer clic para que el navegador no tome la imagen del caché y la cargue cada vez. mi código es:
$(#button).click(function(e) { e.preventDefault() $('.Myimage').attr('src',$('this').src + 'Testimage.png' + '?' + (new Date().getTime())); });Esto casi funciona bien, pero recibo un mensaje indefinido al comienzo de la cadena de mi imagen.
<img src="undefinedTestimage.png?1628621212728" class="Myimage">No estoy seguro de por qué. Me imagino que es algún tipo de error tipográfico. También estoy abierto a mejorar el código. ¿Sugerencias?
$('this') está seleccionando un elemento <this> .
Si lo cambia a $(this) , seguirá sin ser correcto, porque this es el botón, no la imagen. Además, en jQuery usa .attr('src') para obtener el atributo src , no .src .
Si desea obtener el src de la imagen, debe recorrer todos los elementos .Myimage . Puede hacerlo dando un argumento de función al método .attr() . Este recibe el atributo antiguo como argumento y devuelve el nuevo valor.
No necesita concatenar Testimage.png , ya que ya debería estar en el src .
$('#button').click(function(e) { e.preventDefault(); $('.Myimage').attr('src', (i, src) => src + '?' + (new Date().getTime())); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <img src="foo.png" class="Myimage"> <img src="bar.png" class="Myimage"> <br> <button id="button">Click</button>