$ (document) .ready на странице ascx после обратного вызова ajax - PullRequest
5 голосов
/ 12 мая 2009

У меня небольшая проблема с этой настройкой. У меня есть список .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 не стреляют.

Ответы [ 3 ]

1 голос
/ 12 мая 2009

Мне было трудно понять твой вопрос ... но вот оно.

Если вы загружаете дату с помощью вызовов AJAX, событие $ (document) .ready () не сработает, поскольку страница уже была загружена. Вы просто загружаете больше данных сейчас.

Если вы уже знаете, какие элементы управления будут отображаться, предварительно загрузите JavaScript, но вместо просто привязки с помощью обработчика события click, используйте живой обработчик.

так

$("#myControl").click(....);

превращается в

 $("#myControl").live("click", ....);

Извините, если это не то, что вы искали.

1 голос
/ 29 марта 2011

У меня была такая же проблема, после того как скрипт частичной обратной передачи, указанный в $ (document) .ready, не был выполнен. Я нашел решение здесь MSDN - PageRequestManager Class

Похоже, что добавление скрипта, как показано ниже, устраняет проблему

<script type="text/javascript">
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>
1 голос
/ 12 мая 2009

Я успешно использовал $ (document) .ready в моих партиалах, загружаемых через XHR. Представления, которые вы загружаете через XHR, вызывают исключения JavaScript? Или они содержат искаженный HTML?

У меня обычно есть метод $ (document) .ready внизу моего партиала, который я загружаю через Ajax, например ...

<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>
...