Mam mały problem z tą konfiguracją tutaj mam listę plików .ascx
i wszystkie wykonują różne zadania w zakresie obliczeń do samego kontrolera. Tak więc na mojej stronie .aspx
klikam na Ajax.ActionLink()
, a to wyrenderuje konkretny plik .ascx
na podstawie klikniętego elementu. Wewnątrz tego .ascx
są 1-3 zdarzenia, które będą strzelać 2 z nich są zdarzeniami onclick
, a 1 jest onload
. Zdarzenia onclick
są łatwiejsze w obsłudze, ponieważ mogę je zakodować bezpośrednio w zdarzeniu sterującym, tak jak onclick="$("#toggleMe3").slideToggle("slow");"
, a onload
musi działać po załadowaniu .ascx
, testowałem to w wywołaniu $(document).ready(function(){});
, to działa dobrze w .aspx
, ale gdy tylko spróbuję dodać go do strony .aspx
, nie ładuje się i jest idealny, ale działa, ale nie mam pojęcia, dlaczego nie. W rzeczywistości nic w tagach skryptów nie działa, jeśli wstawię je bezpośrednio na stronę .ascx
, które działają tylko wtedy, gdy są wpisane na stałe w zdarzenia kontrolne, przynajmniej niektóre z nich; onload
i nie strzelają.
Odpowiedz
Miałem ten sam problem, po częściowym kodzie zwrotnym określonym w $ (document) .ready nie zostało wykonane. Znalazłem rozwiązanie tutaj MSDN - PageRequestManager Class
Wygląda dodając skrypt jak poniżej rozwiązuje problem
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>
Miałem sukces przy użyciu $ (document) .ready w moich cząstkach, które są ładowane przez XHR. Czy widoki ładowane za pomocą XHR rzucają wyjątki JavaScriptu? A może zawierają zniekształcony HTML?
Ja zazwyczaj mam $ (document) .ready metodę na dole moje częściowe, które załadować za pośrednictwem Ajax, jak ...
<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>
Niestety to nie działa dla mnie, dodałem znaczniki skryptów na dole, wciąż nie ma szczęścia. Używam MicrosoftAjax.js do kontrolowania wywołań Ajax, a nie funkcji ajax jquery. – Ayo
To działa dla mnie, przynajmniej w FF3.5 i IE7 na Windows XP. Jednak nie rozumiem, dlaczego, ponieważ dokumentacja jQuery nie obsługuje tej sprawy ... –
pracował dla mnie na chrome – Roch
miałem trudno zrozumieć swoje pytanie ... ale Oto jest.
Jeśli data ładowania jest używana przy użyciu wywołań AJAX, zdarzenie $ (document) .ready() nie zostanie uruchomione - ponieważ strona została już załadowana. Właśnie ładujesz więcej danych.
Jeśli znasz już elementy sterujące, które się pojawią, załaduj wcześniej JavaScript, ale zamiast wiązania za pomocą funkcji obsługi zdarzeń kliknij użyj procedury obsługi na żywo.
tak
$("#myControl").click(....);
zamienia
$("#myControl").live("click", ....);
przepraszam, jeśli to nie jest to, czego szukali.
byłoby to działać na mojej stronie ascx? – Ayo
, jeśli strona nie jest ładowana dynamicznie, tak. W przeciwnym razie na żywo musisz załadować programy obsługi zdarzeń z aspx. W przeciwnym razie będziesz musiał dodać więcej haków po stronie klienta, aby wiedzieć, kiedy zawartość zostanie załadowana, i wywołać załadowany javascript. –
sam problem tutaj. –