如何让davascript函数在dom准备就绪时只执行一次

时间:2011-09-08 21:38:11

标签: javascript jquery

我一遍又一遍地收到警告“嗨”,如何让它做到一次并停止:

function doSomething() {
   alert('hi');
}

$(function() {
    doSomething();
});

7 个答案:

答案 0 :(得分:10)

        // Fired once when document is ready
        $(document).one('ready', function () {
              doSomething();
        });

使用.one确保只执行一次而不是重复。只要你没有过度,可以放几个document.ready事件监听器(如果你需要多次执行其他事件),为了这个缘故可读性。

当您希望在第一次打开网页或第一次安装移动应用程序时显示警报时,

.one特别有用。

答案 1 :(得分:3)

我认为你从HTML中多次包含你的JS文件。清理你的HTML。


使用:

$(function(){
});

完全正常。使用更详细的形式没有任何好处。如果您正在编写插件,则可能需要执行此操作:

function($){
    // $ always refers to jQuery here
    ...        

}(jQuery);
// $ might not be defined here in compatibility mode.

答案 2 :(得分:1)

尝试:

window.onload = function() {
    doSomething();
}

答案 3 :(得分:1)

最好的方法是...使用cookie-像这样:

$(document).ready(function () {
    if ($.cookie("blocker") == 1) {
        //your code or without code;
        return;
    } else {
        //your code for first time
        $.cookie("blocker", 1, {
            expires: 1 / 24 / 60 //time, this is one minut
        });
    }
}); 

如果您的页面比较聪明,那么这段代码就很好

答案 4 :(得分:0)

劳尔是对的,这将有助于获得代码......

但根据我对此的经验,你想要的更像是:

var doSomething = function() {
  alert('hi');
}

$(document).ready(function () {
  doSomething();
});

答案 5 :(得分:0)

你想做这样的事吗?:

$(document).ready(function() {
    doSomething();
});

答案 6 :(得分:0)

您可能希望坚持更详细的风格:

function doSomething() {
   alert('hi');
}

$(document).ready(function() {
    doSomething();
});