2013-08-20 89 views
1

我只是想知道这是否是一种好方法,或者我是愚蠢的。基本上任何点击身体验证不是流行的锚点,或在popover。如果不是,那么它会隐藏所有的弹出。Bootstrap Popover - 关闭点击任何地方

$("body").on('click', function(e) { 
if(!$(event.target).hasClass('with-popover') && !$(event.target).parents('.with-popover').length && !$(event.target).parents('.popover').length){ 
$(".with-popover").popover('hide'); 
}; 
}); 

回答

2

这是愚蠢的吗?没有。只需进行一些修改即可提高效率。

$('body').on('click', function(event) { 
    var target = $(event.target); // One jQuery object instead of 3 

    // Compare length with an integer rather than with negation 
    if (! target.hasClass('with-popover') 
     && target.parent('.with-popover').length === 0 
     && target.parent('.popover').length === 0) { 

     $('.with-popover').popover('hide'); 
    } 
}); 

jQuery还提供了一个size()函数,它也只是返回长度。我从不再使用它,但只是要意识到。

我不确定return true在做什么,最后的});也许你已经包装在一个函数中。

+0

哦,是的,我在$(function(){和return true;是一个调试的东西,我应该删除.OH大声笑... ...和返回真实;应该是在点击内。顺便说一句,谢谢! –

+0

完全没问题:-) –

+0

就这样,看到这个的其他人都知道,你必须使用.parents,否则它只会检查直接的父母。 –