CheckOneTwo
@CheckOneTwo
Парень, который думает что он фронтэндер.

Как отключить загрузку AJAX контента по клику, когда он уже был загружен?

Есть скрипт навигации, по которому загружается AJAX контент.
Данные для загрузки страницы берутся из кастомного атрибута.

<ul id="navigation-list">
 	<li><a content="about" href="#">About</a></li>
</ul>


$(document).on("click", "ul#navigation-list a", function (e) {

$(this).addClass('active');
$(this).siblings().removeClass('active');

$.ajax({
        type: "POST",
        url: "ajax/"+$(this).attr('content')+".html",
        success: function(html){ ... }
      });
 });


Пожалуйста помогите написать условие, при котором контент загруженный по этой ссылке при повторном клике на неё не загружался, а остальные ссылки оставались активными для загрузки по кастомному атрибуту.
  • Вопрос задан
  • 578 просмотров
Решения вопроса 2
vladqwerty
@vladqwerty
Web developer
Добавьте проверку имеющегося класса active и если он есть, то return false, иначе пускай отрабатывает код ajax запроса
Ответ написан
jumper423
@jumper423
web-developer
var pages = [];

$(document).on("click", "ul#navigation-list a", function (e) {
    var content = $(this).attr('content');
    if ($.inArray(content, pages) === -1) {
        pages.push(content);
        $(this).addClass('active');
        $(this).siblings().removeClass('active');

        $.ajax({
            type: "POST",
            url: "ajax/" + content + ".html",
            success: function (html) {
            }
        });
    }
});


Как-то так...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@JIakki
$("ul#navigation-list a").one("click", function (e) {

$(this).addClass('active');
$(this).siblings().removeClass('active');

$.ajax({
        type: "POST",
        url: "ajax/"+$(this).attr('content')+".html",
        success: function(html){ ... }
      });
 });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы