2009-05-12 1 views
5

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

+0

же проблема здесь. –

ответ

1

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

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

<script type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction); 
</script> 
1

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

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

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

К сожалению, это не сработает для меня, я добавил теги скрипта на дно еще не повезло. Я использую MicrosoftAjax.js для управления вызовами Ajax, а не функцией jquery ajax. – Ayo

+0

Это работает для меня, по крайней мере, в FF3.5 и IE7 в Windows XP. Однако я не понимаю, почему, поскольку документация jQuery не обрабатывает этот случай ... –

+0

это сработало для меня на chrome – Roch

1

я имел трудно понять ваш вопрос ... но вот оно.

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

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

так

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

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

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

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

+0

будет ли это работать на моей странице ascx? – Ayo

+0

, если страница не динамически загружена, да. В противном случае вам нужен live, чтобы предварительно загрузить обработчики событий из aspx. В противном случае вам придется добавить еще несколько крючков на стороне клиента, чтобы знать, когда загружается контент, и вызвать загруженный javascript. –