2012-09-08 32 views
1

我有一個函數:傳遞「這個」來。對功能似乎沒有工作

function test(e){ 
      $('.movie').find('.moreInfo').removeClass('moreInfoShow'); 
      e.parent().find('.moreInfo').addClass('moreInfoShow'); 
      $("#movieBox").isotope('reLayout'); 

      e.parent().find('.moreInfo').css("opacity", "0"); 
      e.parent().find('.moreInfo').animate({opacity: 1}, 500); 
     } 

這是由叫做:

$("#movieBox").on('mouseover', '.moviePoster', function(event){test($(this));}); 

的問題是,我想被調用的函數當頁面加載時。我需要將「this」傳遞給函數,但是我沒有運行它的工作。

這是我所期待的工作:

test($(".moviePoster").first()); 

(所有代碼是 「$(文件)。就緒」 功能)

+2

請提供[小提琴](http://jsfiddle.net/)。 – moonwave99

+1

如果我正確地得到你的問題,請在頁面加載時執行'$(「#movieBox」)。find('。moviePoster')。trigger('mouseover');'。 – Jashwant

+1

$(this)成功通過看看http://jsfiddle.net/rajaadil/vPXfz/1/ – Adil

回答

0

如評論中所述,在頁面加載時觸發mouseover事件。

$("#movieBox").find('.moviePoster').trigger('mouseover'); 

Reference

1

W/O小提琴:

更改此:

$("#movieBox").on('mouseover', '.moviePoster', function(event){test($(this));}); 

$("#movieBox").on('mouseover', '.moviePoster', test); 

然後$(this)裏面的測試函數應該指向觸發事件的jQuery對象。

使用「test($(this))」在回調中調用測試函數將立即執行該函數,而不是在事件觸發時執行。

更新:

你這樣做之後,你需要觸發當然頁面加載鼠標懸停事件。 請參閱Jashwant對如何做到這一點的評論。

更新我錯了。

function(event){test($(this));} 

當然不會立即觸發回調函數。這隻會發生,如果它會是這樣的:

$("#movieBox").on('mouseover', '.moviePoster', test($(this))); 

對不起!

+1

這是不對的。在回調中調用'test'將不會立即執行。它將在事件被觸發時被調用。這就是爲什麼有一個事件處理程序。它在事件發生時處理事件。 –

+0

我其實已經按照你以前的建議的方式,但它似乎沒有通過「這個」或者它可能是另一個問題。它應該在功能被調用時雙向工作,這就是問題所在。 – DominicM

+0

灰色狀態即將到來:jsfiddle認爲,我是對的:http://jsfiddle.net/F9R9r/1/或者我在這裏錯過了什麼? –