Как мне получить фрагмент для загрузки из неуказанного html?

#javascript #jquery #ajax #load #fragment

#javascript #jquery #ajax #загрузить #фрагмент

Вопрос:

После исчезновения меню я не могу отобразить свой контент без указания определенного html.

ВОТ HTML:

 <div id="header">
<h1>N300 Project Gallery</h1>
</div>
<div id="container">
<div id="utility">
<ul>
    <li><a href="about.html">About</a></li>
    <li><a href="projects.html">Projects</a></li>

</ul>

</div>
    <div id="index-content">?</div>
    <div id="footer">This is the footer</div>
</div>
  

Вот мой скрипт:

 $(document).ready(function() {

    $('#utility a').click(function(e){
        e.preventDefault();
        $('#utility').hide('normal',loadContent);
    });
    function loadContent() {
        $('#index-content').load(url  '#content')
    }
});
  

ВОТ ФРАГМЕНТ, КОТОРЫЙ Я ХОЧУ ПЕРЕМЕСТИТЬ:

 <div id="content">
    <p>Hello! My name is Brittany Shephard.</p>
</div>
  

Ответ №1:

Обратите внимание, что вам нужен дополнительный пробел перед #content URL-адресом, на который вы переходите .load() , если вы хотите, чтобы поведение загрузки фрагмента ( ' #content' вместо '#content' ).

Ваш фрагмент находится в отдельном файле, правильно?

Предполагая, что ваш фрагмент возвращен из projects.html #content , попробуйте:

 function loadContent() {
    $('#index-content').load($(this).attr('href')  ' #content');
}
  

Из документов jQuery для hide this устанавливается на скрытый узел DOM при обратном вызове. Я предполагаю, что вы хотите загрузить URL-адрес из якоря, который вы скрываете, поэтому вам нужно захватить href атрибут из этого узла.

Комментарии:

1. Похоже, это не сработает, поскольку скрытый элемент — это не сама ссылка, а контейнер.

Ответ №2:

Откуда берется url in loadContent() ?

В случае, если вам нужно будет передать его из атрибута e.target href, создайте анонимную функцию для обратного вызова hide и передайте URL в LoadContent. Что-то вроде:

 $(document).ready(function() {

    $('#utility a').click(function(e){
        e.preventDefault();
        $('#utility').hide('normal', function() {
            loadContent($(e.target).attr('href'));
        });
    });

    function loadContent(url) {
        $('#index-content').load(url   ' #content');
    }
});
  

Комментарии:

1. url-адрес является заменой для about.html , но я хочу загрузить другой (‘page.html #содержимое») на основе ссылки, по которой вы нажали. Можете ли вы написать, что вы описываете?