2016-04-26 42 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); 
} 
相关问题