2013-03-29 5 views
0

Я работаю в Zend-Framework. У меня есть макет примерно такой:ajaxLink и несколько экземпляров jQuery

<html> 
    <head> 
     <script> 
      function myBeforeSendCallbackJsFunc() {$('#content-loading').show();} 
      function myCompleteCallbackJsFunc() {$('#content-loading').hide();} 
     </script> 
    </head> 
    <body> 
     <div id="menu"> 
      <?php 
      echo $this->ajaxLink("<li>MENU 1</li>", '/controllertest/actionindex', array('update' => '#content', 'beforeSend' => 'myBeforeSendCallbackJsFunc();', 'complete' => 'myCompleteCallbackJsFunc()'), array('format' => 'ajax')); 
      ?> 
     </div> 
     <div id="content"> 
     </div> 
     <?php echo $this->jQuery()->enable()->uiEnable(); ?> 
    </body> 
</html> 

В этом случае функция ajaxLink работает отлично. Я запускаю МЕНЮ 1, а '#content' получает содержимое '/ controllertest/actionindex'. Но если существует функции ajaxLink внутри '/ controllertest/actionindex' он работает только тогда, когда я включаю снова:

<?php echo $this->jQuery()->enable()->uiEnable(); ?> 

Почему?

+0

'uiEnable()' вероятно выводит код обработки событий (не знаком с zend). Если код обработки событий не использует делегирование событий (это лучшее решение), каждый раз, когда вы заменяете элементы, вы должны перегруппировать обработчики событий. Помочь увидеть, как выглядит исходный код браузера – charlietfl

ответ

0

При вызове помощника AjaxLink многократно в некоторых включениях через ajax я генерировал несколько экземпляров функции ajax, созданной этим помощником.

При вызове асинхронно AjaxLink создает путаницу.

Решение: не используйте AjaxLink и создайте глобальную и уникальную функцию ajax.

Смежные вопросы