AJAX: Как заменить содержимое DIV ссылкой в ​​том же DIV?

У меня index.php вот так:

<script type="text/javascript" src="jquery-1.4.2.js"></script> <script type="text/javascript" src="ajax.js"></script> <a href='one.php' class='ajax'>One</a> <div id="workspace">workspace</div> 

one.php

 <?php $arr = array ( "workspace" => "<a href='two.php' class='ajax'>two</a>" ); echo json_encode($arr); ?> 

two.php

 <?php $arr = array( 'workspace' => "Hello World" ); echo json_encode($arr); ?> 

ajax.js

 jQuery(document).ready(function(){ jQuery('.ajax').click(function(event) { event.preventDefault(); // load the href attribute of the link that was clicked jQuery.getJSON(this.href, function(snippets) { for(var id in snippets) { // updated to deal with any type of HTML jQuery('#' + id).html(snippets[id]); } }); }); }); 

Когда index.php загружен, есть ссылка (One) и DIV (рабочее пространство). Когда я нажимаю ссылку «Один», вызывается содержимое one.php, и ссылка «Два» появляется в «рабочей области» DIV успешно.

Но теперь, когда я нажимаю ссылку «Два», «Hello World» не появляется в «рабочей области» DIV и открывается отдельно без вызова AJAX.

Как заставить этот код заменить содержимое рабочей области DIV на «Hello World», используя ссылку «TWO» с вышеуказанным потоком?

благодаря

Related of "AJAX: Как заменить содержимое DIV ссылкой в ​​том же DIV?"

Попробуйте использовать метод live() вместо click :

 jQuery('.ajax').live('click', function(event) { // your code }); 

live используется, когда контент, который вы назначили событиям, присутствует или добавлен / загружен позже.

Проблема в том, что метод init, который делает ссылки «.ajax» настолько волшебными, вызывается только один раз, когда документ загружается. Когда вы заменяете html, волшебство теряется.

Попробуй это:

 function assignLinks() { jQuery('.ajax').click(function(event) { event.preventDefault(); // load the href attribute of the link that was clicked jQuery.getJSON(this.href, function(snippets) { for(var id in snippets) { // updated to deal with any type of HTML jQuery('#' + id).html(snippets[id]).click( function() { assignLinks(); }); } }); }); } jQuery(document).ready(function() { assignLinks(); }); 

Или просто используйте live (как указано ниже).