/ / Spravujte rozsah javascriptu v aplikácii ajax pomocou JQuery - javascript, jquery, firebug

Správa rozsahu javascript v aplikácii ajax cez JQuery - javascript, jquery, firebug

Zaujímalo by ma, ako spravovať rozsah skriptu v plnej aplikácii ajax

Dovoľte mi vysvetliť scenár

  • Stránky sa načítavajú dynamicky v časti div,
  • stránky sú súbory php
  • stránky obsahujú značky skriptov (statické a generované pomocou php) v závislosti od kontext

Scenár zaťaženia:

  1. načítanie stránok hlavnej stránky pomocou funkcie $ .load jquery
  2. stránka je vložená a skript je spustený (väčšinou vstupné udalosti alebo živé udalosti)

Keď vyberiem inú stránku (predstavte si kombináciu so všetkými uvedenými stranami), načíta sa scenár načítania znova ...

2-riadkový kód, ktorý je dôležitý na hlavnej stránke

$("#divContent").children().remove();
$("#divContent").load("*PAGES-X*");

)

Tu sú veľké problémy, JQuery eval kód skriptu a zdá sa, že vloží do Eval Array (v firebugu je umiestnený na jquery.mins.js / eval / seq /číslo poľa) Takže js sa nikdy nevyloží z karty Eval

Takže ak sa na mojich stránkach vyskytne nejaká udalosť naživo, kód sa spustí toľkokrát, koľko sa stránky načítajú ...

Takže potrebujem spôsob, ako vyčistiť tento eval ... alebo automatizovaný spôsob odstránenia všetkých udalostí z konkrétneho rozsahu (pretože mám inú udalosť viazanú na hlavnej stránke)

Ďakujem ti

odpovede:

1 pre odpoveď č. 1

možná

$(selector).die();

príde vhod? Odstráni sa všetky väzby live () pre vybraté prvky. vidieť http://api.jquery.com/die/ pre viac informácií!


0 pre odpoveď č. 2

Po načítaní skriptu nie je možné AFAIK vyložiť.

Mohli by ste použiť skôr prvky iframe ako div, týmto spôsobom pri každom opätovnom načítaní stránky začnete znova od čistej tabuľky (v rámci prvku iframe).

Prípadne napíšte svoj javacsript takým spôsobom, ktorý nespôsobí kolízie, ak sa naraz načítajú mulitple skripty.


0 pre odpoveď č. 3

Môžete skúsiť použiť menný priestor. Na hlavnej stránke:

var ws = {};

V načítanom obsahu:

$( ws.funnyStuff = function() {
// some realy funny stuff here
});

Po dokončení môžete zahodiť celý priestor mien:

ws = {};

Poznámka: položka v firebugu zostane, neviem presne prečo, ale priradený kód už nebude vykonaný.