2016-04-26 2 views
-2

オブジェクト「」を「クリック」イベントの関数に渡すにはどうすればよいですか?現時点では、私のオブジェクトにdataプロパティが含まれているjQuery.Eventオブジェクトを渡しているが、私は、オブジェクトがjPlayerになりたい、私はこれを望んでいないjQuery.EventjQueryイベントプロパティなしでオブジェクトを渡します。

理由は、関数は、コードウォンイベントで呼び出されたときということです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); 
} 
関連する問題