Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: jQuery и AJAX дважды - такое возможно?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » jQuery и AJAX дважды - такое возможно?

Страниц (1): [1]
 

1. Bertolomych - 24 Июля, 2010 - 05:32:17 - перейти к сообщению
Здравствуйте.
Проблема следующая:
На странице по ссылке подгружется блок через AJAX посредством функции jQuery .load(). А в блоке, в свою очередь содержится ссыль, по нажатии на которую в загруженный блок через AJAX должен загрузиться еще один блок. Такая вот матрёшка.
Но фишка в том, что, к сожалению, jQuery, как я понял, отказывается работать в загруженном блоке. Т.е. она его как бы вообще не видит!
Вопрос: можно ли с этим что-нибудь поделать?

на всякий случай, код:
jQuery:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(
  3.     function()
  4.     {
  5.        $('.but1').click(function(){
  6.         var id=$(this).attr('id');
  7.         $('#block1').load('server', {id: id});
  8.       });
  9.       $('.but2').click(function(){
  10.         var id=$(this).attr('id');
  11.         $('#block2').load('server', {id: id});
  12.       });
  13.    }
  14. );
  15.  


кусок из странички:
CODE (html):
скопировать код в буфер обмена
  1. <div  id="block1">
  2. blah-blah-blah
  3. </div>
  4. <div class="but1">Изменить</div>



вставляемый блок:
CODE (html):
скопировать код в буфер обмена
  1. <div  id="block2">
  2. blah-blah-blah
  3. </div>
  4. <div class="but2">Изменить</div>
2. Bertolomych - 24 Июля, 2010 - 08:47:57 - перейти к сообщению
Вообще-то я придумал решение: включить скрипт
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(
  2.    function()
  3.    {
  4.         $('.but2').click(function(){
  5.         var id=$(this).attr('id');
  6.         $('#block2').load('server', {id: id});
  7.         });
  8.    }
  9. );
  10.  


во врезку. Но по-моему это какое-то убогое решение, и мне кажется должно быть более элегантное..
3. Viper - 25 Июля, 2010 - 00:44:21 - перейти к сообщению
вам сюда http://api[dot]jquery[dot]com/live/
4. Bertolomych - 25 Июля, 2010 - 02:29:20 - перейти к сообщению
О! Большое спасибо! Именно это мне и было нужно!
5. JustUserR - 31 Июля, 2010 - 16:55:21 - перейти к сообщению
Bertolomych пишет:
Но фишка в том, что, к сожалению, jQuery, как я понял, отказывается работать в загруженном блоке. Т.е. она его как бы вообще не видит!
Во время динамической загрузки HTML-страниц которые содержат в себе встроенные JS-скрипты необходимо правильно построить опережающий рендеринг - а именно создание специальной JS-функции которая будет выполняться до окончательной загрузки встроенной стараницы и копировать ее JS-код оставливать ее выполнения - а потом полученные JS-функции sandbox-ировать с подменой идентификатора используемого окна и выполнять от имени родительской статичной HTML-страницы В таком случае вложенность загружаемых страниц может быть произвольной - поскольку обработка происходит все равно в родительской странице

 

Powered by ExBB FM 1.0 RC1