2012-06-18 133 views
2

我寫的代碼首先不使用函數原型,當然,它工作得很好:我的函數調用不起作用?

$(function() { 
    $(".PortfolioFade img") 
     .mouseover(function() { 
      popup('PORTFOLIO'); 
      var src = $(this).attr("src").replace("images/paperclip.png", "images/paperclip-black.png"); 
      /*var src = $(this).attr("src").match(/[^\.]+/) + "-black.png";*/ 
      $(this).attr("src", src); 
     }) 
     .mouseout(function() { 
      ; 
      /*var src = $(this).attr("src").replace("images/paperclip-black.png", "images/paperclip.png"); 
      $(this).attr("src", src); Look at popup.js mouseover events*/ 
     }); 
    }); 

然而,當我表達了函數形式相同,函數調用似乎並沒有工作。

$(document).ready(function() { 
    // put all your jQuery goodness in here. 
    $('body').hide().fadeIn(1000); 

    function ImageRollover(image_element, popup_name, original, replacement) 
{ 
    $(element) 
     .mouseover(function(){ 
      popup(popup_name); 
      var src = $(this).attr("src").replace(original,replacement); 
      $(this).attr("src",src); 

     }) 
     .mouseout(function(){ 
      ; 
     }); 
} 

    ImageRollover(".Portfolio img",'PORTFOLIO',"images/paperclip.png","images/paperclip-black.png"); 
}); 

在其他地方定義函數也沒有任何效果。

+1

請使用中的幾句話你的問題是什麼描述了一個適當的標題。想象一下其他人有同樣的問題,但不會找到你的問題,因爲標題是沒有意義的。 –

回答

2

您的函數將第一個變量定義爲image_element,但您在代碼中將其僅定義爲element。這很可能是導致它無法工作的一個因素。

您可能還會在函數中遇到關鍵字this的問題。它不是指原始代碼中的相同對象(jQuery爲您設置HTML元素)。在你的功能,它可能不會被設置爲任何東西,因此它是一個鏈接到window

+0

嘿,你快了47秒:-) – DaneSoul

+0

:)我發現發佈後在他的功能裏面有'this'這個問題。 –

+0

爲什麼'this'會出現在窗口中,而不是'$(element)'(如果它會出現變量名)? – DaneSoul

2
function ImageRollover(image_element, popup_name, original, replacement) 
{ 
    $(element) 

哪裏定義了元素?

可能是你的意思是:

function ImageRollover(image_element, popup_name, original, replacement) 
{ 
    $(image_element) 
+0

謝謝,還有兩件事情需要修正。 – Louis93

3

這是你要實現的目標是什麼?

function ImageRollover(element, popup, original, replacement) 
{ 
    $(element).mouseover(function(){ 
      //popup(element); 
      //var src = $(this).attr("src").replace(original,replacement); 
      $(this).attr("src",replacement); 

     }) 
     .mouseout(function(){ 
      $(this).attr("src",original); 
     }); 
} 

http://jsfiddle.net/SqyDg/