你能告诉我为什么当我在selector
中object
时,点击事件没有被触发;
这是我的代码
https://jsbin.com/seregezahe/1/edit?html,js,output
(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
并使用关闭按钮文本时显示some html is show
。当我点击关闭按钮时,它不是{{1}我的HTML和删除。
答案 0 :(得分:0)
更新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;
})
答案 1 :(得分:0)
问题是您在将元素添加到页面之前选择它们。在将选择器添加到页面后,您需要填充选择器。
....append(...);
....html(...);
config.overlayClick = $('.overlay');
...
或者您需要选择项目而不是使用变量。
答案 2 :(得分:0)
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();
});