【问题标题】:Jquery .load() only parent and ignore childrenJquery .load() 仅父级并忽略子级
【发布时间】:2019-04-12 18:35:47
【问题描述】:

所以,我正在尝试使用 Jquery .load() 从另一个页面加载图片,现在我尝试加载的元素有多个子元素,它们也加载到当前页面上,现在显然我可以隐藏这些 div,但首先我想知道是否有办法只获取父 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>

这就是我现在使用的代码,但是 .heading-image 有多个子元素,如上所述。

综上所述,我只需要加载父元素并忽略上面提到的div的所有子元素,而不必在当前页面上加载这些子元素并隐藏它们(如果可能的话)

【问题讨论】:

  • 您能否给我们您尝试加载图片的页面的链接?
  • 一张图片没有孩子,所以你根本不清楚远程页面需要什么。在 robots 中显示元素 .heading-image 的 html 示例以及您想要的内容
  • @charlietfl 我错过了我的主要帖子中的 HTML 代码,但我已经用它更新了它。
  • 你为什么要从另一个页面加载一个空的 div?您可以使用 JavaScript 创建新元素,然后附加它们。 var header = document.createElement("div"); 后跟 header.className = "heading-image";,最后是 document.getElementById("myNewDiv).appendChild(header);
  • 同意@ryan.kom。从 ajax 调用中提取的逻辑没有意义

标签: javascript jquery html


【解决方案1】:

据我了解,您的目标似乎是将空 div 复制到新页面,同时保持与 &lt;div&gt; 标记关联的背景图像。

最简单的方法是添加两个页面都可以访问的样式表。例如:

CSS

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

JavaScript

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

然后在两个 HTML 文档的头部,让 &lt;link rel="stylesheet" href="style.css"&gt; 指向两个页面的正确样式表。

【讨论】:

    【解决方案2】:

    如果您只想要空的&lt;div class="heading-image"&gt;&lt;/div&gt;,您可以使用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>')
    

    【讨论】:

    • 虽然它不是空元素,但其他页面已内置图像,该图像未在我尝试加载的当前页面上预定义,每个配置文件都不同。
    • 但是如果你清空它就没有图像了。这不是加起来的。是背景图吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多