2012-11-14 193 views
2

繼承人我能夠顯示的情況懸停在src作爲chenged,但屏幕上的圖像本身並沒有真正的改變。任何幫助將是一個很大的幫助。Img attr src不會改變

$('.hoverImgs').hover(
function(){mouseOn = 1; formSelector('hover');}, 
function(){mouseOn = 0; formSelector('out'); 
}); 

function formSelector(method){ 
if(mouseOn === 1 && method === 'hover'){  
    $(this).attr("src", "images/radio_hover.png"); 
    alert($(this).attr("src")); 
} 
else {} 
} 
}); 
+0

'this'沒有任何jQuery的情況下在你的功能..它是窗口 – charlietfl

回答

2

,當你調用函數formSelectorthis將窗口對象的函數內的內容不會丟失。您應該將this對象作爲參數或使用.call/.apply調用該函數。

嘗試像下面,

$(function() { 
    var mouseOn; 
    $('.hoverImgs').hover(
     function(){ mouseOn = 1; formSelector('hover', this); }, 
     function(){mouseOn = 0; formSelector('out', this); } 
    ); 

    function formSelector(method, thisObj){ 
    if(mouseOn === 1 && method === 'hover'){  
     thisObj.src = "images/radio_hover.png"; 
     alert(thisObj.src); 
    } 
    else {} 
    } 

}); 
+0

多謝合作伙伴就像一個魅力! –

2

首先,你到底有沒有額外的});

您真正的問題:this是不是你認爲它是。在這種情況下,this引用窗口對象,而不是圖像。解決這個問題的一種方法是將圖像元素傳遞給函數。

$('.hoverImgs').hover(
    function(){mouseOn = 1; formSelector($(this), 'hover');}, 
    function(){mouseOn = 0; formSelector($(this), 'out');} 
); 

function formSelector(elem, method){ 
    if(mouseOn === 1 && method === 'hover'){ 
    console.log(elem.attr('src')); 
    elem.attr("src", "https://www.google.com/images/srpr/logo3w.png"); 
    } 
} 

Demo