2013-03-11 104 views
0

当我的模态窗口是可见的,当我点击#screen或#loading_modal我需要隐藏这个div的,但我该怎么做,以及如何正确地写它,现在我的代码不工作,但我也有两个对象(#screen,#loading_modal)....我是新的js,如何重构此代码,并使其正常工作......?jquery点击其中一个可见元素处理程序

if ($('#screen').is(':visible')) { 
    $("#screen").click(function() {  
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    }); 
    $("#loading_modal").click(function() {  
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    }); 
    } 

回答

1

无需这里if语句,你可以简单地使用:

$('element:visible').click(function() { ... }) 

所以:

$("#screen:visible").click(function() {  
    $(this).hide(); 
    $('#loading_modal').hide(); 
}); 
$("#loading_modal:visible").click(function() {  
    $('#screen').hide(); 
    $(this).hide(); 
}); 

如果函数都执行相同的任务,你可以简单地使用:

$("#screen:visible, #loading_modal:visible").click(function() {  
    $('#screen').hide(); 
    $('#loading_modal').hide(); 
}); 
1

如果我理解正确的你,我想你需要把支票能见度点击处理内部,就像这样:

$("#screen").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
$("#loading_modal").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
+0

不需要'.is(':visible')'检查,你可以简单地使用'$(“#screen:visible”)。click()'。 :-) – 2013-03-11 15:44:08

1

你做错了。你可以在click事件中检查Condition。一旦发生点击事件。 把if conditon在侧Click事件处理程序

$("#screen").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
$("#loading_modal").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
1

你可以只重构你的代码看起来像这样

$("#screen,#loading_modal").click(function() { 
     $('#screen,#loading_modal').hide();  
}); 

有没有必要检查。如果它是动态创建它的可见

,您需要在创建元素后委托或绑定

$('body').on('click',"#screen,#loading_modal",function() { 
     $('#screen,#loading_modal').hide();  
}); 
+0

有没有可见的所有时间.... – brabertaser19 2013-03-11 15:36:46

+0

@ brabertaser1992如果他们不可见,你不能点击他们反正..所以真的没有理由检查visiblility – 2013-03-11 15:37:41

+0

@wirey是什么意思是如果元素不可见,用户将无法点击它们。如果你不确定:'.hide()'把CSS的display'属性设置为'none',**而不是**'visibility'为'hidden'。使用'display:none;'它们不会出现在页面上。如果您*需要检查可见性,请查看下面的答案。 – 2013-03-11 15:38:57