jQuery 使用 $(document).click 后功能不起作用
jQuery functions not working after using $(document).click
我第一次使用这个功能后,所有功能都停止工作了:
$(document).ready(function(){
var popbox = '#popbox';
$(document).click(function(event){
if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
if($(popbox).is(":visible")){
$(popbox).hide();
}
}
});
例如
$('#ajax').on('click', 'span.popper', function(){
$('#ajax').off('mouseenter mouseleave mousemove', 'span.popper');
})
.on('mouseenter', 'span.popper', popperMouseenter)
.on('mouseleave', 'span.popper', popperMouseleave)
.on('mousemove', 'span.popper', function(e){
popperMousemove(e);
});
});
不再有效。但在点击#popbox 外部之前,一切正常。为什么?
编辑:添加信息
当鼠标进入一个跨度时,出现 div #popbox
(.show()
) 调用 ajax 数据。
如果用户点击它,这个 div 就会成立。
如果用户在其外部单击,我希望 #popbox
到 .hide()
:这是由 $(document).click
函数完成的。
但是当重新进入 #popbox
时,如果用户在外部单击调用 $(document).click
函数,则不会显示任何内容,也不会调用 ajax。否则一切正常。
我猜你的问题是你在函数外定义了弹出框。
你可以试试这个。它对我有用。
$(document).click(function(e) {
var popbox = $('#popbox');
if (!popbox.is(e.target) && popbox.has(e.target).length === 0) {
if ($(popbox).is(":visible")) {
popbox.hide();
}
}
});
Close the bracket
$(document).ready(function(){
var popbox = '#popbox';
$(document).click(function(event){
if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
if($(popbox).is(":visible")){
$(popbox).hide();
}
});**//Here closing barc was missing.**
});
我第一次使用这个功能后,所有功能都停止工作了:
$(document).ready(function(){
var popbox = '#popbox';
$(document).click(function(event){
if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){
if($(popbox).is(":visible")){
$(popbox).hide();
}
}
});
例如
$('#ajax').on('click', 'span.popper', function(){
$('#ajax').off('mouseenter mouseleave mousemove', 'span.popper');
})
.on('mouseenter', 'span.popper', popperMouseenter)
.on('mouseleave', 'span.popper', popperMouseleave)
.on('mousemove', 'span.popper', function(e){
popperMousemove(e);
});
});
不再有效。但在点击#popbox 外部之前,一切正常。为什么?
编辑:添加信息
当鼠标进入一个跨度时,出现 div #popbox
(.show()
) 调用 ajax 数据。
如果用户点击它,这个 div 就会成立。
如果用户在其外部单击,我希望 #popbox
到 .hide()
:这是由 $(document).click
函数完成的。
但是当重新进入 #popbox
时,如果用户在外部单击调用 $(document).click
函数,则不会显示任何内容,也不会调用 ajax。否则一切正常。
我猜你的问题是你在函数外定义了弹出框。 你可以试试这个。它对我有用。
$(document).click(function(e) {
var popbox = $('#popbox');
if (!popbox.is(e.target) && popbox.has(e.target).length === 0) {
if ($(popbox).is(":visible")) {
popbox.hide();
}
}
});
Close the bracket $(document).ready(function(){ var popbox = '#popbox'; $(document).click(function(event){ if(!$(event.target).closest(popbox).length && !$(event.target).hasClass('popper')){ if($(popbox).is(":visible")){ $(popbox).hide(); } });**//Here closing barc was missing.** });