单击时更改图像

时间:2013-10-11 13:22:36

标签: javascript html menu

我有一个带图片的菜单。让我们说这些是图像。当我将鼠标悬停在上面时,它会变为第二张图像。我想在我点击它时(活动时)保留第二张图像。

<a href='index.html'>
   <span>
     <img src="http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg" onmouseover="this.src='http://s3.firstpost.in/wp-content/uploads/2012/12/1Christmas_GettyImages.jpg'" onmouseout="this.src='http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg'"/>
   </span>
</a>

http://jsfiddle.net/nDkRG

2 个答案:

答案 0 :(得分:1)

在纯JavaScript中(给图像id,轻松定位):

/* called by clicking the link (because the image is a child-element),
   a simple means of preventing the default action: */
function nothing (e){
    e.preventDefault();
}

// the 'event' itself is passed as the first argument to the function
function update (e){
    // find what the event-type is ('click','mouseover', 'mouseout'):
    switch (e.type){
        // if it was the mouseover event, we:
        case 'mouseover':
            /* update the src property, retrieving the new src from the
               custom data-over attribute of the element:
            */
            this.src = this.getAttribute('data-over');
            // break out of the switch:
            break;
        case 'mouseout':
            // if the image doesn't contain the 'clicked' class-name, we:
            if (!this.classList.contains('clicked')){
                /* change the src to the string stored within the custom
                   data-out attribute:
                */
                this.src = this.getAttribute('data-out');
            }
            // break out of the switch:
            break;
        // if it's the 'click' event:
        case 'click':
            /* we add the 'clicked' class if it's not already there,
               and remove it if it is already there:
            */
            this.classList.toggle('clicked')
            break;
    }
}

/* retrieving the relevant image element (by its id, using querySelector
   and CSS-notation:
*/
var image = document.querySelector('#demo'),
// retrieving all the 'a' elements, then selecting only the first:
    link = document.getElementsByTagName('a')[0];

// binding an event-handler to the image for the various events:
image.addEventListener('click', update);
image.addEventListener('mouseover', update);
image.addEventListener('mouseout', update);

// binding an event-handler to the 'a' element, to handle the 'click' event:
link.addEventListener('click', nothing);

JS Fiddle demo

答案 1 :(得分:-1)

尝试添加此

$('a').click(function(e){
    e.preventDefault();
    $('img').removeAttr('onmouseover').removeAttr('onmouseout');
})

更新your fiddle