0

私はおかしくなりそうだ。クリック イベントがバインドされた一連の div があります。それらのほとんどは期待どおりに機能しますが、何もしないものもいくつかあります。それらの間のコードに違いはありません(それらを生成するjavascriptであろうと、要素インスペクターに表示される結果のHTMLであろうと)。それらはすべてSafariで機能しますが、Chromeでは時々失敗します。以下のコードでは、「PLAY」でさえコンソールに書き込まれません。

かなり大きなものの一部なのでコードを共有するのは難しいですが、基本的には以下のような感じです。最初に、javascript からドキュメントに書き込まれる HTML:

<div class='thumbnail' id='p-"+ip+"'></div>

結果は次のようになります。

<div class='thumbnail' id='p-220'></div>

次に、次のように click() をバインドします。

      playHandler(ip);

      function playHandler(ip) {
          $("#p-"+ip).click(function() 
            console.log("PLAY");
            popTranscription.listen("canplayall",function() { this.currentTime(ip) });
            popTranscription.play();
            cued = true;
          });
      }

ほとんどの場合、div をクリックすると、バインドされた関数が起動します。時々そうではありません。機能しないのは常に同じ特定のサムネイル クラス div です (たとえば、ドキュメント内にこれらの長いリストがあり、それぞれがその 'ip' 変数で区別されています。つまり、ip 1、2、3 は常に機能し、4 は常に機能します)。うまくいかない)。

申し訳ありませんが、お見せできるものはこれ以上ありませんが、何を探すべきかについて何か考えがある人はいますか? 私はそれを失っています。click() の代わりに bind() を使用してみました。jqueryの代わりにonclickを試しましたが、奇妙な一貫性のない動作も得られます(関数が見つかる場合もあれば、見つからない場合もあります)。

更新: この問題は、ページに存在する重複 ID に関連していました。ID 文字列にいくつかの一意の識別子を追加したところ、問題は解決しました。先導してくれてありがとう!

4

1 に答える 1

0

この方法を試してください

 $(".thumbnail").click(function() {
            var idchunk = $(this).attr('id');
            var ip = idchunk.split('-');
            console.log("PLAY");
            popTranscription.listen("canplayall",function() { this.currentTime(ip[1]) });
            popTranscription.play();
            cued = true;
          });
于 2012-05-14T06:05:42.547 に答える