jQuery点击事件没有在表单提交上触发?

时间:2013-01-14 21:58:54

标签: jquery html5 windows-8

我不确定出了什么问题,但是我的点击事件每隔一段时间都不会触发。 fadeIn功能有问题吗?我尝试将.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;
});

2 个答案:

答案 0 :(得分:1)

如果您想触发点击,则应使用“触发”功能 - http://api.jquery.com/trigger/

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

答案 1 :(得分: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;
});