Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не преобразовывается html код. (https://javascript.ru/forum/jquery/58459-ne-preobrazovyvaetsya-html-kod.html)

dima85 23.09.2015 10:32

Не преобразовывается html код.
 
Есть такой код, он ссылки вида:
<a href="/page.php?p=project" class="ajax">Проекты</a>

Делает такими:
<a class="ajax" href="./#project" data-href="/page.php?p=project">Проекты</a

Нажав на такую ссылку происходит загрузка этой страницы в #content. Код отлично справляется с своей задачей. Но если на той загруженной странице в #content есть еще ссылка с таким же class="ajax" он не преобразовывает ее. Подскажите пожалуйста как это сделать.

var a = $("a.ajax");
   a.each(function(i,e){
     e = $(e);
     e.attr("data-href", e.attr("href"))
       .attr("href", "./#"+e.attr("data-href").split('=')[1])
       .on("click.ajax", function (event) {
         var link = e.attr("data-href");
                   $("#content").html('Загрузка...');
                   $.get(link, function (response) {
                     $("#content").html(response);
                   });
         return false;
       });
   })
});

dd_smol 23.09.2015 11:22

Не понимаю для чего нужны костыли с data-href можно ведь сделать что-то вроде этого.
$('body').on('click.ajax', 'a.ajax', function (e) {
	$("#content")
		.html('Загрузка...')
		.load( $(this).attr('href') );
	
	return false;
});

dima85 23.09.2015 11:44

Не знал. Клева. Спасибо огромное! А можно как-то в url добавлять /#page.php?p=project то есть href нажатой ссылки?

dd_smol 23.09.2015 11:52

Не понял про что вы спрашиваете? Пример html можно.

dima85 23.09.2015 11:58

Нажимаем на: <a class="ajax" href="/page.php?p=project">Проекты</a> У нас идет GET запрос, открывается страница. И в браузере в url мы должны видеть site.com/#page.php?p=project это можно реализовать?

И второе, после нажатия на ссылку, страница прокручивается вверх. Как-то можно избавится от этого прокручивания? Я ранее делал в ссылках onclick="return true;" может есть другой более правильный способ?

dd_smol 23.09.2015 12:44

$('body').on('click.ajax', 'a.ajax', function (e) {
	var href = $(this).attr('href');
	
	$("#content").html('Загрузка...').load( href );
	
	// По первому вопросу можно сделать что-то в этом роде
	location.href = location.href + '#' + href.substr( href.indexOf('=') + 1 );
	
	// Эта штука отменяет действия, зашитые браузером, то есть прокрутку, переход и т.д.
	return false; 
});


Часовой пояс GMT +3, время: 00:10.