У меня небольшая проблема с этой установкой. У меня есть список файлов .ascx
, и все они выполняют разные задачи с точки зрения вычислений самому контроллеру. Поэтому на моей странице .aspx
я нажимаю на Ajax.ActionLink()
, и это отобразит этот конкретный файл .ascx
на основе элемента, который я нажал. В пределах этого .ascx
находятся 1-3 события, которые будут стрелять 2 из них: onclick
событий и 1 - onload
. Событие onclick
проще в работе, так как я могу жестко кодировать его непосредственно в событии управления, например onclick="$("#toggleMe3").slideToggle("slow");"
, а onload
должен запускаться при загрузке .ascx
. Я тестировал это в вызове $(document).ready(function(){});
, это прекрасно работает в .aspx
, но как только я попробую добавить его на страницу .aspx
, она не загружается и ее идеал, что это работает, но я понятия не имею, почему нет. Фактически ничего в тегах скрипта не работает, если я вставляю непосредственно на страницу .ascx
, они работают только, если они жестко закодированы в событиях элемента управления, а некоторые из них по крайней мере; onload
и onprerender
не срабатывают.
ответ
У меня была такая же проблема, после того, как частичный сценарий обратной передачи, указанный в $ (document) .ready, не был выполнен. Я нашел решение здесь MSDN - PageRequestManager Class
Похоже, добавив сценарий, как показано ниже устраняет проблему
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>
У меня был успех с использованием $ (документа). Уже в моих частицах, которые загружаются через XHR. Представления, которые вы загружаете через XHR, бросая исключения JavaScript? Или они содержат неверный HTML?
Я обычно у меня $ (документ) .ready метод в нижней части моего парциальное, что я загружаю с помощью Ajax, как ...
<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>
К сожалению, это не сработает для меня, я добавил теги скрипта на дно еще не повезло. Я использую MicrosoftAjax.js для управления вызовами Ajax, а не функцией jquery ajax. – Ayo
Это работает для меня, по крайней мере, в FF3.5 и IE7 в Windows XP. Однако я не понимаю, почему, поскольку документация jQuery не обрабатывает этот случай ... –
это сработало для меня на chrome – Roch
я имел трудно понять ваш вопрос ... но вот оно.
Если вы загружаете дату, используя вызовы AJAX, событие $ (document) .ready() не будет срабатывать - потому что страница уже загружена. Теперь вы просто загружаете больше данных.
Если вы уже знаете элементы управления, которые будут отображаться, предварительно загрузите JavaScript, но вместо привязки с помощью обработчика событий click используйте обработчик live.
так
$("#myControl").click(....);
превращается в
$("#myControl").live("click", ....);
Извините, если это не то, что вы искали.
будет ли это работать на моей странице ascx? – Ayo
, если страница не динамически загружена, да. В противном случае вам нужен live, чтобы предварительно загрузить обработчики событий из aspx. В противном случае вам придется добавить еще несколько крючков на стороне клиента, чтобы знать, когда загружается контент, и вызвать загруженный javascript. –
же проблема здесь. –