$(документ).готовая страница в формате ascx после обратного вызова ajax
-
21-08-2019 - |
Вопрос
У меня возникла небольшая проблема с этой настройкой, здесь у меня есть список .ascx
файлы, и все они выполняют разные задачи с точки зрения вычислений для самого контроллера.Так что на моем .aspx
страница, на которую я нажимаю Ajax.ActionLink()
и это придаст этому конкретному .ascx
файл, основанный на элементе, на который я нажал.Внутри этого .ascx
есть 1-3 события, которые сработают, 2 из них onclick
события и 1 - это onload
.Тот Самый onclick
с событиями проще работать, поскольку я могу жестко закодировать их непосредственно в событии controls следующим образом onclick="$("#toggleMe3").slideToggle("slow");"
и тот onload
должен запускаться, когда .ascx
загружено, я тестировал это в $(document).ready(function(){});
звоните, это прекрасно работает в .aspx
страница, но как только я попытаюсь добавить ее в .aspx
страница не загружается, и идеально, чтобы это работало, но я понятия не имею, почему нет.На самом деле ничего в тегах скрипта не работает, если я вставляю непосредственно в .ascx
на странице они работают только в том случае, если жестко закодированы в событиях элемента управления, ну, по крайней мере, в некоторых из них;тот самый onload
и onprerender
не стреляйте.
Решение
У меня была такая же проблема, после частичного сценария обратной передачи, указанного в $(document).ready не был выполнен.Я нашел решение здесь MSDN - Класс PageRequestManager
Похоже, добавление скрипта, подобного приведенному ниже, устраняет проблему
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>
Другие советы
Я добился успеха, используя $ (document).готово в моих частичных файлах, которые загружаются через XHR.Являются ли представления, которые вы загружаете через XHR, исключениями JavaScript?Или они содержат искаженный HTML?
Обычно у меня есть свой $ (document).готовый метод внизу моей части, который я загружаю через Ajax, например...
<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>
Мне было трудно понять ваш вопрос ... но вот он начинается.
Если вы загружаете дату с помощью AJAX-вызовов, событие $(document).ready() не сработает, поскольку страница уже была загружена.Сейчас вы просто загружаете больше данных.
Если вы уже знаете, какие элементы управления появятся, предварительно загрузите JavaScript, но вместо простой привязки с помощью обработчика события click используйте обработчик live.
итак
$("#myControl").click(....);
превращается в
$("#myControl").live("click", ....);
Извините, если это не то, что вы искали.