这是我的 HTML
<div id="projekt" style="position: relative; width: 90%;height:400px;"/>
$("#projekt").ready(function() {
.. do something with the div
});
问题在于 ready 函数被调用了两次。可能的原因是什么?这是我的 HTML
<div id="projekt" style="position: relative; width: 90%;height:400px;"/>
$("#projekt").ready(function() {
.. do something with the div
});
问题在于 ready 函数被调用了两次。可能的原因是什么?如果你重复引入同一个 JavaScript 文件,它将被执行两次。在 Firebug 中并不明显。在 script
面板(我用来调试 JavaScript 问题的地方)中,文件在下拉菜单中只会显示一次。但是如果你查看 html
或者 net
面板,就可以看到是否有多个文件。
我的代码大致如下:
<script src="/scripts/project.js" type="text/javascript"></script>
<script src="/scripts/project.js" type="text/javascript"></script>
(这类似于 @chs 的答案,但不只限于rails。)
有一个错误可能会导致这种情况。尝试更新或绑定到文档,而不是 div。具体信息请查看此处。
$("#IDJFmliiojfasdfll").ready()
,它会正常工作 :) - Nick Craver$(document).bind("ready", MyDocumentReadyHandler)
用文本代替代码
$(document).ready(...);
你可以使用此url了解更多关于“ready”函数的信息。
<iframe src="../" ...></iframe>
,则函数 ready() 将被执行两次。请确保您拥有一个有效的 URL。
Ex.:
<iframe src="../something.html" ... ></iframe>
我曾经遇到过这种情况,当我在.ready回调函数中的某个地方有一个alert('...');时。这种情况最近发生在jQuery 1.5.2中。将alert移除后,代码只会运行一次。
在config/application.rb文件中的以下标签中不需要添加应用程序选项:
config.action_view.javascript_expansions[:defaults] = %w(jquery application)
这将导致application.js文件被调用两次,因此您的应用程序中的函数也会运行两次。
ready()
的正确方法是通过document
:$(document).ready(function() {
...
});
我曾经遇到过同样的问题。当我将JS移动到另一个文件中并在head标签中引用它而不是放在我正在处理的div下面时,问题就解决了。
id='projekt'
的元素吗? - Spudley