Jquery .load() только родительский и игнорирует дочерние элементы

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Итак, я пытаюсь загрузить изображение с другой страницы с помощью Jquery .load(), теперь элемент, который я пытаюсь загрузить, имеет несколько дочерних элементов, которые также загружаются на текущую страницу, теперь, очевидно, я мог бы скрыть эти divs, но сначала я хочу знать, есть ли способ захватить только родительский div ине учитывайте дочерние элементы.

Я пытался использовать метод parent(), но поскольку .load() работает по-другому, он не работал должным образом. (Если я что-то не пропустил)

$('#myNewDiv').load('/robots .heading-image');

Вот HTML-код с другой страницы

 <div class="heading-image" style="background-image:url(imagelinkhere.png)">
<div class="heading-image_cover">
   <div class="left">
      <div class="heading-image title">Heading Title</div>
      <div class="heading-image desc">I am a desc</div>
   </div>
   <div class="right">
      <div class="heading-image stat">Stat text</div>
   </div>
</div>
</div>
  

Это код, который я использую прямо сейчас, но .заголовок-изображение имеет несколько дочерних элементов, как упоминалось выше.

Подводя итог, мне нужно загрузить только родительский элемент и игнорировать все дочерние элементы div, упомянутые выше, без необходимости загружать эти дочерние элементы на текущую страницу и скрывать их (если это возможно)

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

1. Можете ли вы дать нам ссылку на страницу, на которой вы пытаетесь загрузить изображение?

2. У изображения нет дочерних элементов, поэтому совсем не ясно, что вам нужно с удаленной страницы. Покажите образец html элемента .heading-image в robots и что вы хотите от него

3. @charlietfl Я пропустил HTML-код из своего основного поста, но я обновил его.

4. Почему вы пытаетесь загрузить пустой div с другой страницы? Вы можете использовать JavaScript для создания новых элементов, а затем добавлять их. var header = document.createElement("div"); затем header.className = "heading-image"; и, наконец document.getElementById("myNewDiv).appendChild(header); .

5. Согласен с @ryan.kom . Логика извлечения из вызова ajax не имеет смысла

Ответ №1:

Насколько я понимаю, ваша цель, похоже, состоит в том, чтобы скопировать пустой div на новую страницу, сохранив при этом фоновое изображение, связанное с <div> тегом.

Самым простым подходом было бы добавить в таблицу стилей, к которой могут быть доступны обе страницы. Например:

CSS

 .heading-image{
   background-image:url(imagelinkhere.png);
}
  

JavaScript

 $('#myNewDiv').html("<div class="heading-image"></div>");
  

Затем в заголовке обоих HTML-документов <link rel="stylesheet" href="style.css"> необходимо указать правильную таблицу стилей для обеих страниц.

Ответ №2:

Если вы просто хотите пустой <div class="heading-image"></div> , вы можете использовать load() полный обратный вызов, чтобы очистить его:

 $('#myNewDiv').load('/robots .heading-image', function(){
    // new html exists in page now, 'this' is #myNewDiv element
    $(this).find('.heading-image').empty();
});
  

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

 $.get('/robots').then(function(html){
    var $hImage = $(html).find('.heading-image').empty();
    $('#myNewDiv').html($hImage)
});
  

Учитывая все сказанное, я не понимаю, зачем вам нужно извлекать пустой элемент с другой страницы и не могу просто сделать:

 $('#myNewDiv').html('<div class="heading-image"></div>')
  

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

1. Однако это не пустой элемент, на другой странице есть встроенное изображение, которое не определено заранее на текущей странице, на которую я пытаюсь его загрузить, оно отличается для каждого профиля.

2. Но если вы очистите его, изображения не будет. Это не складывается. Это фоновое изображение?