将孩子的属性应用到父母

Posted

技术标签:

【中文标题】将孩子的属性应用到父母【英文标题】:Apply attribute of child to parent 【发布时间】:2020-10-05 08:03:12 【问题描述】:

我是 JS/jQuery 的新手,因此感谢任何帮助!:

对于每个具有 property 属性的锚点,我需要获取其子 img 的 src 并将该值应用为父锚点的 href

例如:

<a property="1">
    <img src="abc.jpg">
</a>

<a property="2">
    <img src="def.jpg">
</a>

<a property="3">
    <img src="ghi.jpg">
</a>

会变成:

<a href="abc.jpg" property="1">
    <img src="abc.jpg">
</a>

<a href="def.jpg" property="2">
    <img src="def.jpg">
</a>

<a href="ghi.jpg" property="1">
    <img src="ghi.jpg">
</a>

谢谢!

【问题讨论】:

您可能想使用data-property=" ... " 而不是property=" ... ",这样您就可以遵守html 标准,只需将前缀“data-”添加到您的所有自定义 属性 【参考方案1】:

您可以执行以下代码 尽可能短。

$('a>img').each(function()
    $(this).parent().attr('href',$(this).attr('src'))
);

这将在锚点下的每个图像上循环并将其 src 值分配为其父锚点的 href 值

【讨论】:

【参考方案2】:
document.querySelectorAll(img).forEach(el => 
  el.parentNode.setAttribute('href', el.getAttribute('src'))

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。 虽然此代码可以解决 OP 的问题,但最好包含有关您的代码如何解决 OP 问题的说明。这样,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。高质量、完整的答案强化了这一想法,并且更有可能获得支持。这些功能,加上所有帖子都是独立的要求,是 SO 作为一个使我们与论坛区分开来的平台的一些优势。您可以编辑以添加其他信息和/或使用源文档补充您的解释。【参考方案3】:

你可以这样做:

$("a").each(function() 
  let href = $(this).find("img").attr("src");
  $(this).attr("href", href);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a property="1">
    <img src="abc.jpg">
</a>

<a property="2">
    <img src="def.jpg">
</a>

<a property="3">
    <img src="ghi.jpg">
</a>

【讨论】:

【参考方案4】:

这应该可以完成工作,仅将 href 添加到具有属性的标签

  $("a").each(function (index, value) 
    if ($(this).attr("property")) 
      console.log($(this).children().attr("src"));
      $(this).attr("href", $(this).children().attr("src"));
    
  );

【讨论】:

以上是关于将孩子的属性应用到父母的主要内容,如果未能解决你的问题,请参考以下文章

Vue3将必需的属性传递给孩子,如果它对父母来说是真的

React context api,将数据从孩子传递给父母

如何将两个孩子添加到数据库中的父母

如何使用reactjs解析从孩子到父母的数据?

将悬停样式应用于任何孩子但不是父母

如何在可扩展的listview android中将孩子添加到特定的父母