Используйте jQuery.load() для загрузки фрагментов страницы, но заменяет все в теле

Я хочу заменить оригинальный div.wrapcontent содержимым фрагмента. Но использование.load заменяет все в теле, а не только конкретный div.

        $("nav#category-nav>ul>li").on("click", "a", function() {
        var $thecontent = $("#thecontent"),
        $wrapcontent = $("#thecontent > .wrapcontent");

        var path = $(this).attr("href");

        $wrapcontent.load(path);
    });

2 ответа

Решение

Проблема связана с поведением тега привязки по умолчанию. По умолчанию якорные теги перенаправляют на свои href, Для вашего случая использования вы должны зафиксировать это поведение по умолчанию и предотвратить его возникновение.

Добавить evt Объект к функции и предотвратить поведение по умолчанию, например, так:

$("nav#category-nav>ul>li").on("click", "a", function (evt) {
    evt.preventDefault();
    var $thecontent = $("#thecontent"),
        $wrapcontent = $("#thecontent > .wrapcontent");

    var path = $(this).attr("href");

    $wrapcontent.load(path);
});

Завершить эту строку точкой с запятой не запятая и использовать e.preventDefault();

var $thecontent = $("#thecontent");
Другие вопросы по тегам