2015-12-09 3 views
2

Название довольно странно, но я собираюсь объяснить ситуацию как можно лучше.Вызов из js класса из другого текущего файла

У меня есть веб-сайт с навигационной панелью, и каждая вкладка - это другой файл php. Для всех файлов у меня есть общий файл js и css. Дерево каталогов является:

-tab1.php 
-tab2.php 
-/js/functions.js 

Проблемы возникают, когда я на tab2 и попытаться получить класс от tab1. Класс «this_row» находится только в tab1, и если я нахожусь в tab2, значения не получаются. Если я рисую div с этим классом в tab2, все работает отлично.

function showSensorNames(){ 

    $('.this_row').each(function(){ 
     saveNames.push($(this).find('.btn_view').text()); 
    }); 
} 

И эта функция вызывается из $(document).ready(function(){

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

Обновление: Есть ли способ, когда вкладки не являются разными файлами? Есть ли хороший учебник для этого? И тогда будет признано

+0

Мне непонятно, переходите ли вы от текущей страницы или нет. Если вы загружаете совершенно новую страницу, когда пользователь нажимает на ссылку, тогда нет способа иметь постоянное глобальное состояние в JavaScript. Для этого вам нужно использовать другой шаблон pageload, используя AJAX. В зависимости от данных, которые вы пытаетесь сохранить между страницами, вы можете использовать GET, POST, cookie или даже локальный API-интерфейс. – jered

+0

В одном каталоге (сервере) есть две страницы, вызываемые из навигационной панели. Первый файл имеет класс, который я пытаюсь вызвать из второго файла, но оба они имеют одинаковые js. – CapAm

+1

Ну, даже если они используют один и тот же файл JavaScript, каждый раз, когда вы загружаете новую страницу, вы в основном очищаете сланец и выполняете код с нуля, нет постоянного состояния. – jered

ответ

1

Поскольку вы используете PHP-документ для каждой вкладки, вы в основном перезагружаете страницу (или новую страницу) с помощью каждого щелчка ссылки в вашем навигаторе. JS сбрасывает любые вар или объекты, которые вы создали и сохраняете при перезагрузке. Если вы хотите передать данные JS на новую страницу - сохранение var с помощью HTML5 LocalStorage будет вариантом.

// Store 
localStorage.setItem("color", "blue"); 
// Retrieve 
var retrievable = localStorage.getItem("color"); 

Вы также можете использовать sessionStorage, если хотите только данные, хранящиеся в течение этого сеанса.

+0

Есть ли способ избежать использования документа для каждой вкладки? Может быть, хороший учебник? – CapAm

+1

Посмотрите на структуру MV * Javascript, такую ​​как AngularJS или Ember, которые предназначены для одностраничных веб-приложений. – Korgrue

1

Если вам нужно использовать 2 файла, и вам нужно обмениваться данными между ними, вы можете использовать sessionStorage.

При установке

sessionStorage.setItem('key','value'); 

Когда вы получаете

sessionStorage.getItem('key'); 

Примечание: данные будут уничтожены при закрытии браузера.

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