アンカータグを持つ要素のリストがあり、そのhrefはホバー時に動的に入力されます。ここに私のバインディングコードがあります:
$('.charts-container').on('mouseenter', '.track', function(e) {
Itunes.populateDownloadLink(e);
}
イベントがトリガーされたときに起動するコードは次のとおりです。
var ITunes = {
populateDownloadLink: function(e) {
e.preventDefault();
trackDownloadLink = jQuery(e.currentTarget).find('.itunes-download a');
if (trackDownloadLink.attr('href') == '#') {
apiURL = ITunes.getApiUrl(trackDownloadLink);
// retrieve iTunes download link from iTunes API
jQuery.getJSON(apiURL, function(data) {
if (data.results.length > 0) {
trackDownloadLink.attr('href', data.results[0].trackViewUrl);
}
});
}
これは、要素間をすばやく移動する場合を除いて、ほとんどの場合機能します。時々、それが起こると、リンクが台無しになるようです. たとえば、別の要素の上の要素には、その下の要素にすばやくカーソルを合わせたときに生成されたリンクがあります。URL が生成された要素でなくても、生成された最初の URL を要素が取得する場所で、ある種の競合状態が発生しているようです。e.currentTarget
これは、私が理解していることから、マウスが現在どこにあるか、イベントをトリガーした正確な要素ではなく、関数がバインドされた要素を常に参照する必要がある を使用しているため、これは奇妙に感じます。