私はおかしくなりそうだ。クリック イベントがバインドされた一連の 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 文字列にいくつかの一意の識別子を追加したところ、問題は解決しました。先導してくれてありがとう!