1

我只是想知道这是否是一种好方法,或者我是否愚蠢。基本上,正文中的任何点击都被验证不是弹出框锚点或弹出框内。如果不是,那么它会隐藏所有弹出窗口。

$("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');
};
});
4

1 回答 1

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在做什么,最后});可能你把它包装在一个函数中。

于 2013-08-20T21:57:19.223 回答