javascript - jQuery.each 在 window.onbeforeunload 函数中不起作用

标签 javascript jquery

我有这个代码:

HTML:

<div id="wrapper">
    <div>d</div>
    <div>s</div>
    <div>w</div>
</div>

JS:

window.onbeforeunload = function(e) {
    $('#wrapper>div').each(function(k,v) {
        if($(this).text() == 's') {
            return 'aaaa';
        }
    });
}

http://jsfiddle.net/edhvkhg7/2/

当我尝试关闭 Chrome 选项卡时,不会出现确认弹出窗口。为什么?

最佳答案

您只是从迭代函数返回,而不是从 beforeunload 处理程序返回。 jQuery 对函数返回值所做的唯一事情是测试它是否为 false,并停止迭代。它不会从包含函数中返回。

window.onbeforeunload = function(e) {
    var return_val = null;
    $('#wrapper>div').each(function(k,v) {
        if($(this).text() == 's') {
            return_val = 'aaaa';
            return false; // End the loop
        }
    });
    return return_val;
};

关于javascript - jQuery.each 在 window.onbeforeunload 函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32150889/

相关文章:

php - 为什么谷歌地图代码阻止了我的其他 js 脚本?

javascript - Knockout - 如何引用单击的元素并传入参数

jquery - Scrollbarwidth 防止文档宽度达到 100%

javascript - 如何使用 &lt;input type ="file"/> 的文件名更改 <label> 中的文本

javascript - Jquery 选项卡与旋转 slider 冲突

javascript - Jquery - 从带分隔符的字符串创建一个数组,然后计算它的值

javascript - 如何通过 jquery/ajax 将复选框数据作为数组发送到 php 脚本

javascript - 从数组中删除部分

javascript - jsPlumb 点击单个项目

Jquery Draggable/Droppable 附加多个 div