查找`body`标签是否在弹出窗口中具有类

时间:2015-03-12 18:12:42

标签: javascript jquery html

我有一个网页,您可以使用window.open将内容放入弹出窗口。

弹出窗口class上的body名为pop-up。需要注意的是,两个窗口都使用相同的JavaScript文件处理click事件。

我想知道我是否在弹出窗口或主(父)窗口中单击。由于HTML基本相同。

以下是我尝试这样做的方法。我维护了最后一次单击元素的全局变量,这似乎有效:

$(document).click(function(event) {
    window.lastElementClicked = event.target;
    g_lastClicked = window.lastElementClicked;
});

我知道这很好,因为当我检查最后点击的元素的tagName时,它总是正确的。

然后,当我想检查“我在哪里”时,我想这样做:

    var fromPopup = $(g_lastClicked).closest("body").hasClass("pop-up"); // the line in question
    alert(fromPopup);
    if (fromPopup) {
        // unrelated; I need a check to do resizing if I am in the pop-up
        var height = $(window).height();
        $("#cvApplication").height(height - 120);
    }

因此它将检查最后一个元素,将DOM遍历到正文并查看它是否具有class。我每次都在上面false获得alert。我的逻辑错了吗?或者我需要采取完全不同的方式吗?

2 个答案:

答案 0 :(得分:1)

它们是独立的窗口,不需要跟踪“活动”元素。每个窗口都有自己的脚本副本及其自己的变量,事件处理程序等。

您的代码中只需要

if ($(document.body).hasClass("pop-up")) { // Without the . before pop-up
    // This code is running in the pop-up
} else {
    // This code is running in the main window
}

答案 1 :(得分:0)

我还没有检查过你的其余代码,但是在检查元素是否有类时你不使用.

var fromPopup = $(g_lastClicked).closest("body").hasClass(".pop-up");

应该是

var fromPopup = $(g_lastClicked).closest("body").hasClass("pop-up");