[英]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.