2011-07-01 10 views
0

私は自分のコードにいくつか問題があると確信しています。私のjQueryと生のjavascriptをどのように混ぜるかわからない。私のjsファイルに関連するコードは次のとおりです。jQuery関数が期待どおりに実行されていません

$(document).ready(function() { 
    $('#show-video').click(function(event) { 
     jQuery('.player-hold').slideDown("slow"); 
     $('#book').slideDown('slow', function() { 
      playVideo(); 
     }); 
     jQuery('.features').slideUp("slow"); 
    }); 
}); 

function onPlayerStateChange(newState) { 
    if(newState == 0) { 
     jQuery('.player-hold').slideUp("slow"); 
     jQuery('.features').slideDown("slow"); 
    } 
} 

function playVideo() { 
    if (ytplayer) { 
     ytplayer.playVideo(); 
    } 
} 

function onYouTubePlayerReady(playerId) { 
    ytplayer = document.getElementById("ytPlayer"); 
    ytplayer.addEventListener("onStateChange", "onPlayerStateChange"); 
    ytplayer.setPlaybackQuality("highres"); 
    ytplayer.cueVideoById("PoTa2FTmDWk"); 
} 

基本的には、ビデオを見るためのリンクを持つdivがあります。リンクがクリックされると、ビデオ(以前は表示されていません)が表示され、リンクを含むdivが非表示になります。これは正常に動作します。最後の部分は、ビデオがビデオをスライドさせて終了し、divコンテナが戻ってくるところです。すべて動作します。問題は、ビデオが表示されたら、私は再生ビデオを実行したいということです。これは動作していません。

確かに簡単な修正/ noobyの間違いです。

PS。 jqueryを削除して関数playVideo()を追加すると、アンカーにクリックすると、ビデオは期待どおりに再生されますが、スライド機能は失われます。

+0

ちょっとしたスタイルのポイント:JQueryオブジェクトをアドレス指定する単一の方法に固執する必要があります。 '$'または 'jQuery'のどちらかです。 – nfechner

+0

作業コードの例を投稿できますか?それは 'onclick =" playVideo(); "よりもですか? –

+0

「ytplayer.playVideo()」という行にコンソールエラーが表示されますか?その関数は呼び出されますか? FFを使用している場合は、JavaScriptコンソールを開いて(ツールメニューにあると思います)、Firebugをインストールまたは使用できます。 Google Chromeを使用している場合は、レンチ - >ツールメニューでコンソールを見つけることができます。 – rav

答えて

0

コードに$(jQuery(の奇妙な組み合わせが使用されています。どちらか一方を選択する必要があります。別のライブラリと競合しない限り、$(が優先されます。競合が発生した場合は、jQuery(とし、noconflict()を使用してください。

+0

はい、申し訳ありませんが、コードの一部は私が更新した競合モードがないためjQueryを使用しています。 – Michael

+0

@マイケル:謝罪は必要ありません。あなたのコードはあなたが変更した後に違った働きをしますか? –

+0

これは問題だったかもしれませんが、raw jsを独自のファイルに入れて再構成しました。 http://freecss.info/testing/で動作しているのを見ることができます。ページ上のサインアップボタンの隣にビデオを見るためのリンクがあります。 divを置き換えるビデオスライドが終了するとスライドします。 – Michael

関連する問題