Jquery загрузить данные из URL или перейти к URL - PullRequest
1 голос
/ 01 июня 2011

У меня есть 2 php-страницы с именами «personal_info» и «портфолио».Я загружаю их через функции php в codeigniter http://www.mysite.com/controller/personal_info и http://www.mysite.com/controller/portfolio.

. У меня есть страница с вкладками меню, связанными с personal_info и портфолио, и я хочу загружать страницы через ajax при нажатии на вкладку.Если js отключен в браузере, вкладки должны просто перейти к URL.

Я использую функцию jquery .load() для загрузки страниц.

<script type="text/javascript">     
$(document).ready(function(){
    $('#personal_info').click(function() {
        $('#result').load('personal_info #load'); //load fragments from #load div
    }); 

    $('#portfolio').click(function() {
        $('#result').load('portfolio #load');
    });         
});
</script>

HTML

<div id="tab"><a href="http://www.site.com/portfolio/edit/general_info" id="general_info">General Info</a></div>

<div id="tab"><a href="http://www.site.com/portfolio/edit/portfolio" id="portfolio">Portfolio</a></div>

<div id="result"></div>

Проблема: когда я нажимаю на вкладку, она обрабатывает еекак ссылка и переходит на URL вместо загрузки страницы через jquery.Как я могу отключить ссылку, если JavaScript включен?Кроме того, я заметил, что javascript не загружается из фрагментов на страницах, и если я помещаю javascript на страницу, я загружаю данные, он не забирает их.

Какое хорошее решение для этого?

РЕДАКТИРОВАТЬ:

Для загрузки js, я просто завернул всю страницу в result div и загружаю другие страницыс помощью js и header, нижнего колонтитула.

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Для первой проблемы: ставьте return false; в конце каждой функции 'click':

$('#personal_info').click(function() {
    $('#result').load('personal_info');
    return false;
}); 

Редактировать: Для второй проблемы, возможно, вытащите любой jquery / javascript и запустите его изцентральный файл application.js?

2 голосов
/ 01 июня 2011

Чтобы остановить действие по умолчанию (по ссылке), вам нужно использовать return false в конце функции jQuery click ().

Что касается вашей второй проблемы («javascript не загружается с [динамически загружаемых] страниц»), убедитесь, что вы используете функциональность .live jQuery для присоединения обработчиков.

2 голосов
/ 01 июня 2011

Необходимо запретить действие по умолчанию для элемента <a/>.Вы можете сделать это, используя event.preventDefault()

$('#personal_info').click(function(e) {
    $('#result').load('personal_info');
    e.preventDefault();
}); 

$('#portfolio').click(function(e) {
    $('#result').load('portfolio');
    e.preventDefault();
});         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...