2012-06-18 4 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

Почему '' 'будет для окна, но не' $ (element) '(если это будет имя переменной corrcet)? – 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/

Смежные вопросы