繁体   English   中英

为什么事件无法在jquery中触发?

[英]why event not fire in jquery?

您能告诉我为什么在object selector时click事件没有触发吗? 这是我的代码https://jsbin.com/seregezahe/1/edit?html,js,输出

(function(){
  $(function(){
    var config ={
      btn:$('#btn'),
      hello:$('.hello'),
       bodyClickEvent: $("body"),
       overlayClick: $('.overlay'),
      closeBtnSelector: '#closeBtn',
    };
  config.btn.click(function(){
    $('#container').append($('#overlay').html())
    $('.popupdata').html('<div class="hello">xxxx</div><a href="javascript:void(0)"  id="closeBtn" >X Close</a></div>');


  })
  config.bodyClickEvent.on("click", config.closeBtnSelector, function () {

    //why it is not working
    config.overlayClick.fadeOut(500);
               config.overlayClick.remove();
    // below code is working fine
               //$('.overlay').fadeOut(500);
               //$('.overlay').remove();
            });

})
})()

为什么这两条线不起作用

 config.overlayClick.fadeOut(500);
               config.overlayClick.remove();

当我运行我的代码时,当我单击button时,它会显示一个buttonsome html is show带有关闭按钮文本。当我单击关闭按钮时,它不会fadeout我的html并删除。

更新dom后更新配置对象

config.btn.click(function(){
    $('#container').append($('#overlay').html())
    $('.popupdata').html('<div class="hello">xxxx</div>'+
                         '<a href=""  id="closeBtn" >X Close</a></div>');
    config.overlayClick= $('.overlay');
    config.closeBtnSelector = '#closeBtn'
    return false;
  })

问题是您在将元素添加到页面之前正在选择它们。 将选择器添加到页面后,需要填充它们。

....append(...);
....html(...);
config.overlayClick = $('.overlay'); 
...

或者您需要选择项目而不是使用变量。

var config ={
  btn:$('#btn'),
  hello:$('.hello'),
  bodyClickEvent: $("body"),
  overlayClick: $('#overlay'),
  closeBtnSelector: '#closeBtn',
};

因为当您调用上面的$('#overlay')时元素#overlay不存在,所以$('#overlay')返回一个空列表。

下面的代码应该工作:

var config ={
  btn:$('#btn'),
  hello:$('.hello'),
  bodyClickEvent: $("body"),
  overlayClickSelector: '#overlay',
  closeBtnSelector: '#closeBtn',
};

config.bodyClickEvent.on("click", config.closeBtnSelector, function () {         
  $(config.overlayClick).remove();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM