2013-08-20 123 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,否則它只會檢查直接的父母。 –