Nejlepší postup pro spouštění událostí na stránce volání ze stránky ajax

Mám stránku, která uvádí spoustu souborů. Na tuto stránku lze přistupovat přímo přes adresu URL nebo ji lze načíst v modálním dialogu přes ajax z jiné stránky.

Pokud je stránka souborů načtena přes ajax, chtěl bych uživateli umožnit kliknout na název souboru a spustit akci na stránce, která načetla stránku souborů. Existuje například stránka pro úpravu článku. Tato stránka obsahuje tlačítko „připojit soubor“. Když uživatel klikne na tlačítko, stránka souborů se načte v modálním dialogu a po kliknutí na název souboru se do formuláře článku vloží ID souboru a dialog se zavře. Existuje však také stránka pro úpravu události s podobným tlačítkem, ale rád bych na této stránce zacházel s událostí po kliknutí na název souboru trochu jinak.

Chtěl bych tyto události kliknutí zpracovat mírně odlišně v závislosti na volací stránce. V tuto chvíli definuji funkci handleru s globálním rozsahem na stránce obsahující formulář, ke kterému se připojují soubory, poté testuji tuto funkci na stránce souborů po kliknutí na název souboru a volám, pokud existuje. Funguje to, ale připadá mi to trochu zamotané. Existuje nějaký osvědčený postup pro tento druh věcí, o kterém nevím?

Používám jQuery, pokud to nějakým způsobem usnadňuje...

Odpověď

Měli byste se podívat na jQuery Live

Připojte k události handler pro všechny prvky, které odpovídají aktuálnímu selektoru, nyní i v budoucnu.

Když je stránka Ajax načtena, nezpracovává ji DOM stejným způsobem, jakým byla načtena hlavní stránka, proto použití živého vysílání připojí událost ke všem aktuálním emitorům událostí i budoucím, jako je dynamický obsah Ajax

V rámci vašeho modelu Ajax

<div>
    ...
    <a href="#" id="ajax_click_event">Add to main page</a>
    ...
</div>

a na vaší statické stránce (původně načtené)

$("#ajax_click_event").live('click',function(){
    //Work wit the value of the form within the ajax div.
})