0

アンカータグを持つ要素のリストがあり、その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これは、私が理解していることから、マウスが現在どこにあるか、イベントをトリガーした正確な要素ではなく、関数がバインドされた要素を常に参照する必要がある を使用しているため、これは奇妙に感じます。

4

1 に答える 1