2009-04-11 2 views
5

Я хочу изменить несколько изображений onclick, используя JQuery вместо обычного JavaScript, а также изменить атрибут изображения alt в то же время для доступности.Как изменить атрибут изображения и alt при нажатии?

Это должно быть что-то легкое, поскольку я не хочу делать какой-то особый эффект на изменения, но я до сих пор ничего не нашел об этом.

Вот как я делал с JS (без изменения атрибута альта):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Change Image using Javascript</title> 
<script type="text/javascript"> 
    function changeImg(image_id, image_folder){ 
    document.getElementById(image_id).src = image_folder; 
} 
</script> 
</head> 
<body> 
<div align="center"> 

<img id="image1" src="images/nameofthesubfolder/originalimage1.jpg" alt="Original Image 1" /> 
<br /> 
    <label><input type="radio" name="radio_btn1" onclick="changeImg('image1', 'images/nameofthesubfolder/image1.jpg')"/>Image 1</label> 
    <label><input type="radio" name="radio_btn1" onclick="changeImg('image1', 'images/nameofthesubfolder/image2.gif');"/>Image 2</label> 
    <label><input type="radio" name="radio_btn1" onclick="changeImg('image1', 'images/nameofthesubfolder/image3.png');"/>Image 3</label> 
    <label><input type="radio" name="radio_btn1" onclick="changeImg('image1', 'images/nameofthesubfolder/image4.jpeg');"/>Image 4</label> 
<br /> 
<br /> 
<img id="image2" src="images/nameofthesubfolder/originalimage2.jpg" alt="Original Image 2" /> 
<br /> 
    <label><input type="radio" name="radio_btn2" onclick="changeImg('image2', 'images/nameofthesubfolder/image5.gif')"/>Image 5</label> 
    <label><input type="radio" name="radio_btn2" onclick="changeImg('image2', 'images/nameofthesubfolder/image6.png);"/>Image 6</label> 
    <label><input type="radio" name="radio_btn2" onclick="changeImg('image2', 'images/nameofthesubfolder/image7.jpeg');"/>Image 7</label> 
    <label><input type="radio" name="radio_btn2" onclick="changeImg('image2', 'images/nameofthesubfolder/image8.gif');"/>Image 8</label> 
</div> 
</body> 
</html> 

И есть ли способ, чтобы избежать повторяющихся изображений/nameofthesubfolder /?

Edit: спасибо altCognito, но я не понимаю, как использовать этот код, чтобы иметь различный альт атрибут для каждого изображения. Возможно, я забыл упомянуть, что искал его (плохой).

ответ

8

Пойдем с этим. (Я помчался через это изначально)

<img id="radio_btn1" src="originalimage1.jpg" /> 
<br /> 
    <input type="radio" name="radio_btn1" value='image1.jpg' /> 
    <input type="radio" name="radio_btn1" value='image2.gif' /> 
    <input type="radio" name="radio_btn1" value='image3.png' /> 
    <input type="radio" name="radio_btn1" value='image4.jpeg' /> 

А потом JQuery:

imgFldr = 'images/nameofthesubfolder/'; 
$("input[type='radio']").click(function() { 
    $('#'+this.name).attr('src', imgFldr+this.value).attr('alt', 'newattribute'); 
}); 

See the example.

Вы можете редактировать его здесь: http://jsbin.com/esebu/edit

4

Вы не на самом деле нужно много изменений кода ..

Вот пример:

function changeImg(image_id, image_folder) { 
    $("#" + image_id).attr({ 'src': image_folder, 'alt': image_folder }); 
} 

И вы можете держать ур HTML код ..

<label><input type="radio" name="radio_btn2" onclick="changeImg('image2', 'images/nameofthesubfolder/image5.gif')"/>Image 5</label> 
+0

Я также пробовал это на своей странице, он работает тотально ... –

+0

i У вас есть проблема с частью клика. например, если его щелчок на литах 2 раза, чтобы выполнить действие, просто создайте его с помощью: 'onclick =" javascript: changeImg ('image2', 'images/nameofthesubfolder/image5.gif') "' –