[英]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
时,它会显示一个button
, some 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.