valor texto remover name con cambiar boton atributo jquery html

texto - Cambia la fuente de la imagen en rollover usando jQuery



jquery atributo id (14)

Adaptado del código de Richard Ayotte: para apuntar a un img en una lista ul / li (que se encuentra aquí a través de la clase div de wrapper), algo como esto:

$(''div.navlist li'').bind(''mouseenter mouseleave'', function() { $(this).find(''img'').attr({ src: $(this).find(''img'').attr(''data-alt-src''), ''data-alt-src'':$(this).find(''img'').attr(''src'') } );

Tengo algunas imágenes y sus imágenes de rollover. Usando jQuery, quiero mostrar / ocultar la imagen de rollover cuando ocurre el evento onmousemove / onmouseout. Todos los nombres de mis imágenes siguen el mismo patrón, como este:

Imagen original: Image.gif

Rollover Image: Imageover.gif

Quiero insertar y eliminar la parte "sobre" de la fuente de la imagen en el evento onmouseover y onmouseout, respectivamente.

¿Cómo puedo hacerlo usando jQuery?


Esperaba un linaje como über:

$("img.screenshot").attr("src", $(this).replace("foo", "bar"));


He hecho algo como el siguiente código :)

Solo funciona, cuando tienes un segundo archivo nombrado con _hover, por ejemplo, facebook.png y facebook_hover.png

$(''#social'').find(''a'').hover(function() { var target = $(this).find(''img'').attr(''src''); //console.log(target); var newTarg = target.replace(''.png'', ''_hover.png''); $(this).find(''img'').attr("src", newTarg); }, function() { var target = $(this).find(''img'').attr(''src''); var newTarg = target.replace(''_hover.png'', ''.png''); $(this).find(''img'').attr("src", newTarg); });


Mientras buscaba una solución hace algún tiempo, encontré un guión similar al siguiente, que después de algunos ajustes me puse a trabajar.

Maneja dos imágenes, que casi siempre están predeterminadas en "off", donde el mouse está fuera de la imagen (image-example_off.jpg), y el ocasional "on", donde para los tiempos del mouse está el mouse, la imagen alternativa requerida ( Se muestra la imagen-ejemplo_on.jpg).

<script type="text/javascript"> $(document).ready(function() { $("img", this).hover(swapImageIn, swapImageOut); function swapImageIn(e) { this.src = this.src.replace("_off", "_on"); } function swapImageOut (e) { this.src = this.src.replace("_on", "_off"); } }); </script>


Para configurar en listo:

$(function() { $("img") .mouseover(function() { var src = $(this).attr("src").match(/[^/.]+/) + "over.gif"; $(this).attr("src", src); }) .mouseout(function() { var src = $(this).attr("src").replace("over.gif", ".gif"); $(this).attr("src", src); }); });


Sé que estás preguntando sobre el uso de jQuery, pero puedes lograr el mismo efecto en los navegadores que tienen JavaScript desactivado usando CSS:

#element { width: 100px; /* width of image */ height: 200px; /* height of image */ background-image: url(/path/to/image.jpg); } #element:hover { background-image: url(/path/to/other_image.jpg); }

Hay una descripción más larga here

Aún mejor, sin embargo, es usar sprites: simple-css-image-rollover


Si la solución que busca es un botón animado, lo mejor que puede hacer para mejorar el rendimiento es la combinación de sprites y CSS. Un sprite es una imagen enorme que contiene todas las imágenes de su sitio (encabezado, logotipo, botones y todas las decoraciones que tiene). Cada imagen que tiene usa una solicitud HTTP, y mientras más solicitudes HTTP, más tiempo tomará cargar.

.buttonClass { width: 25px; height: 25px; background: url(Sprite.gif) -40px -500px; } .buttonClass:hover { width: 25px; height: 25px; background: url(Sprite.gif) -40px -525px; }

Las coordenadas 0px 0px serán la esquina superior izquierda de tus sprites.

Pero si estás desarrollando un álbum de fotos con Ajax o algo así, entonces JavaScript (o cualquier marco) es lo mejor.

¡Que te diviertas!


Si tiene más de una imagen y necesita algo genérico que no dependa de una convención de nomenclatura.

HTML

<img data-other-src="big-zebra.jpg" src="small-cat.jpg"> <img data-other-src="huge-elephant.jpg" src="white-mouse.jpg"> <img data-other-src="friendly-bear.jpg" src="penguin.jpg">

JavaScript

$(''img'').bind(''mouseenter mouseleave'', function() { $(this).attr({ src: $(this).attr(''data-other-src'') , ''data-other-src'': $(this).attr(''src'') }) });


Una solución genérica que no lo limita a "esta imagen" y "esa imagen" solo puede ser agregar las etiquetas ''onmouseover'' y ''onmouseout'' al código HTML en sí.

HTML

<img src="img1.jpg" onmouseover="swap(''img2.jpg'')" onmouseout="swap(''img1.jpg'')" />

JavaScript

function swap(newImg){ this.src = newImg; }

Dependiendo de su configuración, tal vez algo como esto funcionaría mejor (y requiere menos modificación de HTML).

HTML

<img src="img1.jpg" id="ref1" /> <img src="img3.jpg" id="ref2" /> <img src="img5.jpg" id="ref3" />

JavaScript / jQuery

// Declare Arrays imgList = new Array(); imgList["ref1"] = new Array(); imgList["ref2"] = new Array(); imgList["ref3"] = new Array(); //Set values for each mouse state imgList["ref1"]["out"] = "img1.jpg"; imgList["ref1"]["over"] = "img2.jpg"; imgList["ref2"]["out"] = "img3.jpg"; imgList["ref2"]["over"] = "img4.jpg"; imgList["ref3"]["out"] = "img5.jpg"; imgList["ref3"]["over"] = "img6.jpg"; //Add the swapping functions $("img").mouseover(function(){ $(this).attr("src", imgList[ $(this).attr("id") ]["over"]); } $("img").mouseout(function(){ $(this).attr("src", imgList[ $(this).attr("id") ]["out"]); }


/* Teaser image swap function */ $(''img.swap'').hover(function () { this.src = ''/images/signup_big_hover.png''; }, function () { this.src = ''/images/signup_big.png''; });


$(''img'').mouseover(function(){ var newSrc = $(this).attr("src").replace("image.gif", "imageover.gif"); $(this).attr("src", newSrc); }); $(''img'').mouseout(function(){ var newSrc = $(this).attr("src").replace("imageover.gif", "image.gif"); $(this).attr("src", newSrc); });


$(''img.over'').each(function(){ var t=$(this); var src1= t.attr(''src''); // initial src var newSrc = src1.substring(0, src1.lastIndexOf(''.''));; // let''s get file name without extension t.hover(function(){ $(this).attr(''src'', newSrc+ ''-over.'' + /[^.]+$/.exec(src1)); //last part is for extension }, function(){ $(this).attr(''src'', newSrc + ''.'' + /[^.]+$/.exec(src1)); //removing ''-over'' from the name }); });

Es posible que desee cambiar la clase de imágenes desde la primera línea. Si necesita más clases de imágenes (o una ruta diferente) puede usar

$(''img.over, #container img, img.anotherOver'').each(function(){

y así.

Debería funcionar, no lo probé :)


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>JQuery</title> <script src="jquery.js" type="text/javascript"> </script> <style type="text/css"> #box{ width: 68px; height: 27px; background: url(images/home1.gif); cursor: pointer; } </style> <script type="text/javascript"> $(function(){ $(''#box'').hover( function(){ $(''#box'').css(''background'', ''url(images/home2.gif)''); }); $(''#box'').mouseout( function(){ $(''#box'').css(''background'', ''url(images/home1.gif)''); }); }); </script> </head> <body> <div id="box" onclick="location.href=''index.php'';"></div> </body> </html>


<img src="img1.jpg" data-swap="img2.jpg"/> img = { init: function() { $(''img'').on(''mouseover'', img.swap); $(''img'').on(''mouseover'', img.swap); }, swap: function() { var tmp = $(this).data(''swap''); $(this).attr(''data-swap'', $(this).attr(''src'')); $(this).attr(''str'', tmp); } } img.init();