7
votes

JQuery Evénement prêt non tiré sur la charge partielle de la page

Voici le Situ: une page contenant HTML et à l'aide de la bibliothèque JQuery et des onglets JQuery UI Plugin charge une autre page lorsque vous avez cliqué sur une autre page. Le problème est que lorsque la page / HTML est chargée / rendue (simplifions cela et disons que c'est juste faire quelque chose comme $ ("# mydiv"). Charge (URL);), l'événement prêt n'est pas tiré car bien sûr le " La fenêtre "a déjà chargé et tiré l'événement de chargement. Cela signifie qu'aucune des choses jQuery que je ne veux faire sur charge (charge partielle) de la page est exécutée. Le plug-in UI.TABS est conçu pour charger des pages dans d'autres onglets et nous pouvons supposer que d'autres pages peuvent contenir leur propre jQuery ... il devrait donc y avoir un moyen de contourner cela.

Je peux penser à des moyens très horribles de surmonter le problème, comme avoir un bloc de script au bas de la page étant rendu (chargé dans une DIV) qui fait tout ce que je ferais quand prêt est préparé (comme vous le pouvez Supposons que le navigateur a déjà rendu la page si le bloc de script est touché). C'est cependant une très mauvaise pratique. Toute suggestion?


0 commentaires

5 Réponses :


-1
votes

Je crois que vous pouvez faire quelque chose comme ça (dérivé de ASP.NET ):

<script type=”text/javascript”>
     <!--
     Sys.WebForms.PageRequestManager.getInstance().add_EndRequest(Request_End);
     function Request_End(sender, args)
     {
          // Insert code you want to occur after partial page load here
     }
     // -->
</script>


2 commentaires

C'est pour Mme Ajax, pas JQuery et juger par le PagerequestManager Je suis à peu près sûr que cela ne s'applique qu'aux formes Web ASP.NET.


Compris, mais si vous regardez les réponses fournies par M. Ah, il déclare qu'il utilise asp.net. J'ai fourni une manière qui a comblé l'écart d'une charge de page partielle .NET pour tirer quelle que soit la fonction JS qu'il souhaitait tirer (JQuery Ready Event ou Autrement).



2
votes

La méthode de charge offre un rappel exécuté une fois que le contenu a été chargé.

$("#myDiv").load(url, null, function() { 
   //do your stuff here 
});


0 commentaires

5
votes

Comment allez-vous la demande Ajax au serveur? Si vous utilisez ASP.NET AJAX, la réponse de Brian Hasden est ce que vous recherchez. Si vous utilisez JQuery pour envoyer la demande, vous pouvez également définir un appel à l'aide de la fonction de chargement.

$(document).ajaxComplete(function() {
    // code here
});


0 commentaires

1
votes

Eh bien - j'utilise ASP.NET MVC avec jQuery. Je n'utilise pas la vue partielle (ASCX) pour cette partie de l'application, mais je chante des vues complètes, mais je les chargeant à DIVS. J'ai donc une vue principale avec une tête avec une référence à un fichier JS qui est la logique côté client de ce "type" de vue. Lorsque vous cliquez sur une onglet sur cette vue, nous utilisons les onglets JQuery sur "Charger" Antoher View dans une div. La manière dont les onglets sont chargés à l'aide de ce plugin indique simplement une URL (plutôt que d'utiliser la charge sur laquelle - comme indiquée, je pourrais ajouter une fonction de rappel plutôt que de compter sur le prêt).

Toutefois. Je ne veux pas que toute la logique du client soit dans certaines visites parent, car toute vue devrait pouvoir charger une autre vue par URL (Sous Vues inclut un lien vers leur fichier JS associé contenant toutes la logique au format / raccordement lorsqu'elle est chargée).

Qu'est-ce qui me déroutant vraiment est que cela semble fonctionner dans certaines situations et non dans d'autres; Par exemple 1) Lorsque la vue parent est ouverte dans une image dans IE, les sablées de la vue ne sont jamais déclenchées 2) lors de l'ouverture de la même url directement dans IE, les sous-titres sont déclenchés 3) lors de l'ouverture de la même URL dans FFX2 le Toutes les personnes ne sont pas déclenchées 4) Enfin .. mais lors de l'ouverture d'une sous-vue (qui a des sous-vues) de ce parent à FFX2, l'événement prêt à l'enfant est déclenché! .. Défling ..

Je suis va courir des tests n Se retourner à Ya, mais toutes les suggestions sur la raison pour laquelle ce comportement pourrait être différent serait très apprécié

Mise à jour: ah ha! .. On dirait même avec les obstacles ci-dessus, il y a Une différence de navigateur (évidemment de la lecture ci-dessus) .. Le test simple ci-dessous fonctionne bien dans IE7 mais échoue à FFX2. L'événement prêt est déclenché dans IE mais pas FFX lors du chargement du test2.htm dans Test1.htm. De l'expérience, je sais que cela signifie que c'est-à-dire que c'est-à-dire un «bizarrerie» et FFX fonctionne comme vous l'attendez sur la base de W3C. Donc, on dirait que cette approche est un non non, à moins que quiconque n'a aucune suggestion ?:

test1.htm xxx

test2.htm xxx


0 commentaires

2
votes

OK .. Donc, j'ai une réponse simple à ce problème maintenant, ce qui signifie que des changements de code minimes. Plutôt que les sous-vues (ce sont des vues réelles ASPX qui n'ont pas de balises HTML, de la tête ou de corps) comprennent un JS (essentiellement le modèle de comportement côté client) qui répond à $ (document) .Ready, nous pouvons utiliser la suggestion de < fort> mkedobbs pour fournir quelque chose de similaire. Simplement: xxx

puis dans la sous-vue JS comprend xxx


0 commentaires