0

「ウィンドウ追加」ボタンがあり、それをクリックすると、新しい div が dom に追加されます。新しい div のスクロール イベントはそれにアタッチされたくないため、スクロール時にアラートを表示します。新しく追加されたので、on イベント ハンドラーを統合する必要があることはわかっていますが、それでもうまくいきませんでした。これが私が試したものです:

<div id="window-add">Window Add</div>

$('#window-add').click(function(){
    $(this).after('<div id="scroll-window">Scroll Me.</div>');
});

//using on doesn't work below either
$('#scroll-window').scroll(function(){
    alert('scrolling');
});

これを機能させる方法について何か考えはありますか?ここにフィドルがあります

4

2 に答える 2

3
  1. IDはページごとに一意でなければなりません。(複数の ID を追加しています)

  2. スクロールできない要素をbodyに追加しているだけです。
    実際にbody要素をスクロールするよりも、イベント$('#scroll-window')を呼び出すことは期待できません。scroll

jQuery 1.6.4(あなたのフィドルのようなもの)を使用すると、次のように使用して次のようなことを行う必要があります.bind()

LIVE DEMO

var scrollWindow = $('<div>', {
    id:"scroll-window",
    html: "Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me.Scroll Me."
});


$('#window-add').click(function(){
    $(this).after(scrollWindow);
});

// IF YOU USE jQ (1.7+) you can use .on() method instead of .bind()
scrollWindow.bind('scroll', function(){
    alert('scrolling');
});

jQuery <1.7 .bind()
を使用 jQuery 1.7+ .on() を使用

于 2013-04-29T23:56:18.207 に答える
0
$('#window-add').click(function () {
  $(this).after('<div id="scroll-window">Scroll Me.</div>');
  $(window, this).scroll(function () {
    alert('scrolling');
  });
});

これはうまくいきますか?

http://jsfiddle.net/rJFCz/3/

于 2013-04-29T23:55:59.400 に答える