Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何检查元素是否在视口中?_Jquery_Notifications - Fatal编程技术网

Jquery 如何检查元素是否在视口中?

Jquery 如何检查元素是否在视口中?,jquery,notifications,Jquery,Notifications,我正在尝试在我的网站上实现一个通知系统。我从中吸取了一些想法(别担心,这非常简单),并对其进行了轻微修改,以适应我的系统 我的情况是,每次向该用户发送新消息时,我都使用一个div,'.info'。到目前为止,我已经对其进行了设置,每次用户单击页面时,通知都会移出视口 $(document).on('click',function() { hideAllNotifications(); }); 但是,我不希望在收到新消息时发生这种情况,因为用户可能没有注意到通知出现,因此在按下'.inf

我正在尝试在我的网站上实现一个通知系统。我从中吸取了一些想法(别担心,这非常简单),并对其进行了轻微修改,以适应我的系统

我的情况是,每次向该用户发送新消息时,我都使用一个div,
'.info'
。到目前为止,我已经对其进行了设置,每次用户单击页面时,通知都会移出视口

$(document).on('click',function()
{
    hideAllNotifications();
});
但是,我不希望在收到新消息时发生这种情况,因为用户可能没有注意到通知出现,因此在按下
'.info'
之前,即当用户单击.info横幅时,通知应该保持不变。但是,如果用户在查看此
.info
时单击身体,那么它应该仍然在那里。另一方面,如果所有其他通知div(如
.success、.error
)都可见,则单击正文应该只隐藏这些div

那么我如何实现这一点呢?我一直试图用offset()、position()和height()检查信息是否在视口中,但它们不一致

我试过:

if(($('.info').position().top < 0))
{
    $(document).on('click',function()
    {
        hideAllNotifications();
    });
//      alert("info is out of view");
}
else
{
    $('.info').on('click',function()
    {
        hideAllNotifications();
    });
//      alert("info is inside our view");
}
看看这个:
function getNewMessage()
{
    //retrieve new messages
    showNotification('info', 'You have a new message');
}