Ответ 1
Там ошибка, которая может вызвать это. Попробуйте обновить или привязать к документу вместо div.
Это мой html
<div id="projekt" style="position: relative; width: 90%;height:400px;"/>
$("#projekt").ready(function() {
.. do something with the div
});
Проблема заключается в том, что функция ready вызывается дважды. В чем может быть причина?
Там ошибка, которая может вызвать это. Попробуйте обновить или привязать к документу вместо div.
Если вы дважды включите свой файл 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, но не специфичный для рельсов.)
Я нашел решение этой проблемы.
Вы должны использовать этот код
$(document).bind("ready", MyDocumentReadyHandler)
вместо кода
$(document).ready(...);
Вы можете больше узнать о функции "ready", используя этот url.
Я видел это, когда у меня есть предупреждение ( "..." ); где-то внутри обратного вызова .ready. Это происходит совсем недавно, как jQuery 1.5.2. Принимая оповещение, код запускается только один раз.
Не нужно добавлять параметр приложения в следующий тег в config/application.rb config.action_view.javascript_expansions [: defaults] =% w (приложение jquery)
Он дважды вызовет applcation.js, поэтому функции также выполняются дважды в вашем приложении
Правильный способ вызова ready()
для document
:
$(document).ready(function() {
...
});
У меня была такая же проблема. Он ушел, когда я переместил свой JS в другой файл и включил его в тег заголовка, а не под div, над которым я работал.
Вы столкнетесь с той же проблемой при использовании JQM(jQueryMobile)
, но проблема в моем случае имела дубликаты атрибутов data-role="content"
. Этот атрибут запускает обработку всего внутри конкретного div или элемента с этим атрибутом. В моем случае функция .ready
была дважды завернута в нее и поэтому выполнена дважды. Надежда, которая помогает кому-то.
Если у вас неправильный src в iframe, например <iframe src="../" ...></iframe>
, функция ready() будет выполнена дважды. Убедитесь, что у вас есть действительный URL.
Пример:.
<iframe src="../something.html" ... ></iframe>