2013-06-27 1 views
0

Это моя первая попытка использовать вкладки JQuery. У меня есть простой файл, который загружает 3 других php-файла при нажатии на вкладки.JQuery в файлах, загруженных с помощью вкладок JQuery

<div id="info"> 
    <ul id="info-nav"> 
     <li><a href="tab1.php">Tab 1</a></li> 
     <li><a href="tab2.php">Tab 2</a></li> 
     <li><a href="tab3.php">Tab 3</a></li> 
    </ul> 
</div>  

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $('#info').tabs(); 
    }); 

</script> 

Файлы php также используют JQuery и загружаются правильно. Когда я тестирую файлы автономно, части JQuery работают нормально. Но как только они загружаются в вкладки, JQuery не работает. Даже простое оповещение в $ (document) .ready (function() ...) в загруженном файле не отображается. Есть ли какой-то конфликт между JQuery в 2 файлах? Спасибо за любую помощь.

+0

Да, может быть. Вы видите какие-либо ошибки в консоли? –

+0

Нет, части HTML обрабатывают все флажки, кнопки и т. Д. Ошибок нет. Но части JQuery не работают. –

+0

Вы открыли консоль и посмотрели? или вы только предположили, что, поскольку html правильно обрабатывается, ошибок нет (что не является безопасным допущением ...) –

ответ

0

Там нет конфликта самих по себе, но одна из двух вещей происходят:

  • Браузера Отказавшись выполнить содержимое < сценария > тегов в динамически загружаемом контенте;
  • Браузер выполняет сценарии < >, но событие ready не запускается на объект документа, когда содержимое динамически загружается.

Второе почти наверняка верно; первый может также быть.

Чтобы узнать, какой случай имеет место, вместо того, чтобы положить alert() внутри $(document).ready() обратного вызова, положить его просто в < сценария > тега данного HTML-файл, а затем загрузите и выберите вкладку, которая загружает этот HTML-файл динамически , В первом случае, описанном выше (< сценарий > теги вообще не выполняются), предупреждение не будет отображаться; во втором случае (готовое событие не срабатывает), это будет.

Если код выполняется вообще, тогда все, что вам нужно сделать, это вывести код из обратного вызова и обернуть его в голое < скрипт > теги; он будет выполнен, как только браузер увидит его. В противном случае - и я бы предположил, что это целесообразно в любом случае для удобства обслуживания - вам нужно будет переработать ваше приложение, чтобы оно не зависело от выполнения Javascript, содержащегося в случайном < сценариях >, разбросанных по вашим различным файлам HTML , но вместо этого использует некоторый унифицированный обработчик для решения любых задач, связанных с загрузкой содержимого вкладки.

+0

код внутри готового документа будет выполнен немедленно, если dom уже готов, так что этого не может быть. Сценарии просто не исполняются. Он не имеет ничего общего с браузером, скорее всего пользовательский интерфейс jQuery лишает скрипты из него или возникает ошибка, тем самым останавливая скрипт. –