这是我的HTML
<div id="projekt" style="position: relative; width: 90%;height:400px;"/>
$("#projekt").ready(function() {
.. do something with the div
});
问题是ready函数被调用两次。可能是什么原因?
答案 0 :(得分:11)
如果您将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。)
答案 1 :(得分:10)
有a bug which can cause this。尝试更新或绑定到文档而不是div。
答案 2 :(得分:2)
我找到了解决这个问题的方法。
您应该使用此代码
$(document).bind("ready", MyDocumentReadyHandler)
而不是代码
$(document).ready(...);
您可以阅读有关&#34; ready&#34;的更多信息。函数使用此url。
答案 3 :(得分:1)
我看到这种情况发生在我有警报时('...');在.ready回调中的某个地方。这最近发生在jQuery 1.5.2上。取消警报使代码只运行一次。
答案 4 :(得分:1)
无需在config / application.rb中的以下标记中添加应用程序选项 config.action_view.javascript_expansions [:defaults] =%w(jquery application)
它将调用applcation.js两次,因此函数也会在您的应用程序中运行两次
答案 5 :(得分:0)
调用ready()
的正确方法适用于document
:
$(document).ready(function() {
...
});
答案 6 :(得分:0)
我有同样的问题。当我将我的JS移动到另一个文件并将其包含在head标签中而不是我正在处理的div之下时,它就消失了。
答案 7 :(得分:0)
使用JQM(jQueryMobile)
时会遇到同样的问题,但我的问题是重复data-role="content"
个属性。该属性触发使用该属性处理特定div或元素内的所有内容。在我的情况下,.ready
函数被包装两次,因此执行了两次。希望有所帮助。
答案 8 :(得分:0)
如果iframe中有错误的src,如<iframe src="../" ...></iframe>
,则函数ready()将执行两次。确保您拥有有效的网址。
例:
<iframe src="../something.html" ... ></iframe>