2011-09-08 25 views
5

只执行一次的我就要惊动“喜”了一遍又一遍,我怎么把它做一次并停止:如何获得一个javascript函数,在DOM准备

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

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

你能告诉我们你在哪里,包括JavaScript文件您发布的HTML? –

+2

我看不到相同的行为。这是一个小提琴示例。 http://jsfiddle.net/BjbEM/ – JaredPar

+0

我想操作系统希望功能运行一次页面呈现第一次,然后在页面刷新OP不希望功能运行? – Rafay

回答

1

尝试用:

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

他使用jQuery,这是最好称呼它在'$(文件)。就绪()' –

0

劳尔是正确的,这将有助于让代码...

但是根据我这方面的经验,你想要的是沿着线的东西更多:

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

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

您是否想要做这样的事情?:

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

您可能要坚持到更详细的风格:

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

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

虽然我这种风格决定不服的,它无关,与他的问题 – Matt

+0

@马特:你说得对,这是很难值得回答而不是评论。我只想显示格式正确的备选样式 - 想知道更简洁的表单是否隐藏了一些错误(未在原始文章中显示)。 –

3

我想你包括你的JS文件多次来自HTML。清理你的HTML。


使用:

$(function(){ 
}); 

是完全正常的。使用更详细的表单没有好处。如果你正在编写一个插件,你可能会想这样做:

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

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

极好的建议,检查JS是否被多次包含。更详细的'$(document).ready'形式的优点是它明确了你在做什么,特别是对不懂jQuery的编码人员。 –

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

使用。一是保证这只是一次完成,不repeatedly.It是好的把几个的document.ready事件侦听器(如果你需要多次执行其他事件),只要你不过分,为了可读性。当你想警告出现在第一次网页打开或当移动应用程序安装在首次

。一是特别有用。