0

何が悪いのかわかりませんが、クリックイベントが毎回発生しません。フェードイン機能に問題はありますか?andに変更.clickしてみましたが、同じ問題が発生します。.live.on

これが私のコードです:

$('#form').submit(function (ev) {
     ev.preventDefault();                
     $('#wrapper').html(html).scrollTop(0);              
     $('#base').fadeIn('slow', function () { 
          document.onkeydown = docOnKeydown; 
     }).click(function () {
          alert('Click Fired');
     });
     return false;
});
4

2 に答える 2

1

クリックをトリガーしたい場合は、「トリガー」機能を使用する必要があります - http://api.jquery.com/trigger/

$('#base').fadeIn('slow', function () { document.onkeydown = docOnKeydown; })
            .click(function () {
              alert('Click Fired');
            });
$('#base').trigger('click');
于 2013-01-14T22:03:36.153 に答える
0

問題のオブジェクトにイベント ハンドラーを追加するだけの場合:

$('#base').click(function () {
   alert('Click Fired');
}).fadeIn('slow', function () { document.onkeydown = docOnKeydown; });

フェードイン後にクリックイベントをトリガーしますか?

$('#base').fadeIn('slow', function () {
    document.onkeydown = docOnKeydown; 
    $(this).trigger('click');
});

トリガー クリック I (潜在的にフェードイン中に)

$('#base').fadeIn('slow', function () {
    document.onkeydown = docOnKeydown; 
 }).trigger('click');

編集:残りが追加されたときのハンドラ

$(document).on('click','#base',function () {
  alert('Click Fired');
});
$('#form').submit(function (ev) {
  ev.preventDefault();
  $('#wrapper').html(html).scrollTop(0);
  $('#base').fadeIn('slow', function () {
    document.onkeydown = docOnKeydown;
  });
  return false;
});

ベター: ベースにコンテナーがある場合のハンドラー用。パフォーマンス上の理由から、ドキュメントよりも「ローカル」にタグ付けしてください。

$('#basecontainer').on('click','#base',function () {
  alert('Click Fired');
});

コメントに基づいて編集:、「既に存在します」これも機能し、DOM 上でよりシンプルになるはずです:

$('#base').click(function () {
  alert('Click Fired');
});
$('#form').submit(function (ev) {
  ev.preventDefault();
  $('#wrapper').html(html).scrollTop(0);
  $('#base').fadeIn('slow', function () {
    document.onkeydown = docOnKeydown;
  });
  return false;
});
于 2013-01-14T22:13:37.780 に答える