2010-11-05 40 views
16

這是我的HTMLjQuery的準備函數被調用兩次

<div id="projekt" style="position: relative; width: 90%;height:400px;"/> 

$("#projekt").ready(function() { 

    .. do something with the div 
}); 

問題是準備函數被調用兩次。可能是什麼原因 ?

+0

你能告訴你的HTML?你有很好的機會加入這兩次,或者甚至不止一次地引用jQuery? – hunter 2010-11-05 15:39:46

+0

你可能有'id ='projekt''兩個元素? – Spudley 2010-11-05 15:42:43

+0

是的,我有jQuery引用兩次。但是jQuery只有一個腳本元素。當我刪除這個元素時,兩個jQuery引用都消失了。奇怪。 – user137348 2010-11-05 15:44:55

回答

10

a bug which can cause this。嘗試更新或綁定到文檔而不是div。

+1

+1 - 1.4.3錯誤是最有可能的原因,因爲選擇器無關緊要...你可以執行'$(「#IDJFmliiojfasdfll」)。ready()'它會工作:) – 2010-11-05 16:03:52

+2

I嘗試更新到1.4.4rc2並且錯誤依然存在。我正在使用$(document).ready()... – nornagon 2010-11-05 22:39:24

+5

Urgh,發現問題所在:我的就緒函數拋出一個異常......導致準備好的處理程序不註冊ready事件已經處理。參見http://bugs.jquery.com/ticket/7273 – nornagon 2010-11-05 23:28:05

0

調用ready()的正確方法是document

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

$()。ready(handler)是[equivalent](http://api.jquery.com/ready/)但不推薦。爲什麼不推薦? – Grastveit 2011-04-08 18:13:52

0

我有同樣的問題。當我將我的JS移動到另一個文件並將其包含在head標記中而不是在我正在處理的div下時,它就消失了。

1

我看到這種情況發生時,我有一個提醒('...'); .ready回調中的某處。這發生在最近的jQuery 1.5.2。將警報發出讓代碼只運行一次。

1

無需在配置以下標記添加應用程序的選項/ application.rb中 config.action_view.javascript_expansions [:默認值] =%(重量)(jquery的應用程序)

它將調用applcation.js的兩倍,因此該功能還會在您的應用程序中運行兩次。

11

如果您包含JavaScript文件兩次,它將執行兩次。 這在螢火蟲中沒有清楚顯示。 script面板(我去調試javascript問題)將只在下拉菜單中顯示一次文件。但是,如果您查看htmlnet面板,您可以查看是否有倍數。

我有這樣的事情:

<script src="/scripts/project.js" type="text/javascript"></script> 
<script src="/scripts/project.js" type="text/javascript"></script> 

(這類似於@chs答案,但沒有具體到軌)。

+0

這是我的「準備好」功能發射兩次的原因。我曾經在tiles-template「layout」中包含了一次js文件......並且,通過tiles-definition「add-attribute」包含相同的文件。謝謝! – sairn 2015-04-20 21:39:42

2

我找到了解決這個問題。

您應使用此代碼

$(document).bind("ready", MyDocumentReadyHandler) 

不是代碼的

$(document).ready(...); 

你可以閱讀更多有關使用此url 「準備」 功能。

0

當使用JQM(jQueryMobile)時,您會遇到同樣的問題,但在我的情況下,問題是重複的data-role="content"屬性。該屬性觸發處理特定div或元素內的所有內容。在我的情況下,.ready函數被包裝了兩次,因此執行了兩次。希望能幫助別人。

0

如果iframe中存在錯誤的src,如<iframe src="../" ...></iframe>,函數ready()將執行兩次。確保你有一個有效的網址。

例:

<iframe src="../something.html" ... ></iframe>