1

divjQuery を介して動的にロードされる s のセットに対して、次のイベント ハンドラーがあります。

$(document).ready(function () {
    $('.one span').hover(function () {
        $(this).animate({ backgroundColor: '#666666', color: '#DDDDDD', marginRight: 5 }, 250);
    }, function () {
        $(this).animate({ backgroundColor: '#DDDDDD', color: '#666666', marginRight: 0 }, 250);
    });
});

$('.one span')問題は、これらのイベント ハンドラーが起動されないことです。おそらく、ページが読み込まれた後にこれらの要素が jQuery を介して読み込まれるためだと思われます。

この状況で何ができますか?後で来る要素に対して、ある種の「遅延バインディング」を行うにはどうすればよいですか?

4

1 に答える 1

4

$('.one span').hover(DOM に動的に追加されるため、委任されたイベントを使用する代わりに。下記参照、

$(document).on('mouseenter', '.one span', function () {
  $(this).animate({ backgroundColor: '#666666', color: '#DDDDDD', marginRight: 5 }, 250);
}).on('mouseleave', '.one span', function () {
   $(this).animate({ backgroundColor: '#DDDDDD', color: '#666666', marginRight: 0 }, 250);
});

document上記のスクリプトを実行するときに存在する最も近いコンテナーに置き換えます。

于 2013-10-31T19:46:46.623 に答える