2016-04-26 80 views
-2

如何將對象self傳遞給「Click」事件上的函數?目前,它正在通過jQuery.Event對象,它包含一個data財產與我的對象,但我希望對象是jPlayer,不jQuery.Event通過.On()沒有事件屬性的jQuery傳遞對象

我想這是當函數被調用的事件中的代碼拿下的原因不工作,因爲我將不得不通過jPlayer.data.jPlayer訪問數據,如果我這樣做,那麼我的changeShuffleIcon(self);將無法​​正常工作。

ready: function() { 
    var self = this; 
    changeShuffleIcon(self); 

    $(".jp-shuffle").on("click", { jPlayer: self }, changeShuffleIcon); 
} 

...

function changeShuffleIcon(jPlayer) { 
    if ($(jPlayer).hasClass("jp-state-shuffled")) { 
     $(".jp-shuffle").children().addClass("clicked-button"); 
    } else { 
     $(".jp-shuffle").children().removeClass("clicked-button"); 
    } 
} 

(砍掉一些代碼的簡潔。)

+0

[文檔清楚地表明您需要通過'event.data'](http://api.jquery.com/on/#on-events-selector-data-handler)訪問傳入的數據。 – zzzzBov

回答

1

你可以做這樣的事情:

function changeShuffleIcon(jPlayer, isNotEvent) 
{ 
    if(!isNotEvent) 
    { 
     jPlayer = jPlayer.data.jPlayer; 
    } 
    if ($(jPlayer).hasClass("jp-state-shuffled")) { 
     $(".jp-shuffle").children().addClass("clicked-button"); 
    } else { 
     $(".jp-shuffle").children().removeClass("clicked-button"); 
    } 
} 

ready: function() { 
    var self = this; 
    changeShuffleIcon(self, true); 

    $(".jp-shuffle").on("click", { jPlayer: self }, changeShuffleIcon); 
}