【问题标题】:Returning data from images in order按顺序从图像中返回数据
【发布时间】:2018-10-03 13:39:34
【问题描述】:

我对我的(基本)javascript 非常生疏,所以希望我没有完全误解这个问题,但基本上我想要做的是将图像的“alt”字段作为附加到标题的标题返回每个图像的标题,虽然我基本上是这样,但它会将整个图像序列的列表返回给每个图像,而不是它们自己的序列。代码非常简单,这可能就是它不起作用的原因。任何帮助表示赞赏

$('#projectThumbs img').each(function(){
  $('.project-title').append("<div>" + $(this).attr('alt') + "</div>");
    });

例如,如果图像的标题序列为“1”、“2”、“3”,则每个图像现在都将附加“1,2,3”而不是“1”到 1、“2” ' 到 2 等。

来自 html 的图像结构(在 Squarespace 中,因此我无法访问源代码,只能进行注入)。这是在图像网格中。

ETA:注意到代码中有一些隐藏的 div,也许 project-item-count 在某些方面有用?

<a class='project'>
    <div>
        <div class='project-image'>
            <div class='intrinsic'>
              <div class = 'content-fill'>
                 <img alt='example'>
              </div>
            </div>
          <div class='project-item-count'>
          </div>
        </div>
        <div class='project-title'>
            Title
        </div>
    </div>
</a>

image of what's happening to help clarify

【问题讨论】:

  • 也请分享您的 HTML 代码。 .project-title 选择该类的所有元素,但您可能希望在内部元素范围内。
  • 这是通过 squarespace,但图像都是标准的 我只是想拉 alt 文本
  • 这看起来应该可以工作,假设选择器(#projectThumbs img.project-title)匹配您的 HTML 中的元素。 (并且图像实际上具有alt 属性。)如果它不起作用,我们需要更多细节。
  • 感谢您的 html。这对我来说看起来不错,我唯一能想到的就是检查您是否将 jQuery 代码放入 $(document).ready 处理程序中。否则它可能会在图像元素进入 DOM 之前尝试运行,在这种情况下它将不起作用,
  • @RobinZigmond 我不确定这是问题所在。它似乎运行良好,但仍然返回太多值而不是每个实例的相关值(请参阅 screengrab)

标签: javascript jquery css image


【解决方案1】:

$('.project-image img').each(function(){
  $(this).parents('.project-image').next().append("<div>" + $(this).attr('alt') + "</div>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class='project'>
    <div>
        <div class='project-image'>
            <div class='intrinsic'>
              <div class = 'content-fill'>
                 <img src="https://picsum.photos/200" alt='example1'>
              </div>
            </div>
          <div class='project-item-count'>
          </div>
        </div>
        <div class='project-title'>
            Title
        </div>
    </div>
</a>
<a class='project'>
    <div>
        <div class='project-image'>
            <div class='intrinsic'>
              <div class = 'content-fill'>
                 <img src="https://picsum.photos/200" alt='example2'>
              </div>
            </div>
          <div class='project-item-count'>
          </div>
        </div>
        <div class='project-title'>
            Title
        </div>
    </div>
</a>

【讨论】:

  • 这似乎只是打破了标题,我不认为它喜欢必须通过父 div
【解决方案2】:

假设 HTML 包含有效的 #projectThumbs 元素,问题是您没有正确定位 .project-title 元素。

您需要使用parent()(查找元素的父元素)来执行此操作,然后使用siblings() 查找正确的兄弟(已分配project-title 类)。

请看下面的演示:

$('#projectThumbs img').each(function() {
  $(this).parent().siblings('.project-title').append("<div>" + $(this).attr('alt') + "</div>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="projectThumbs">
  <a class='project'>
    <div>
      <div class='project-image'>
        <img alt='example'>
      </div>
      <div class='project-title'>
        Title
      </div>
    </div>
  </a>
</div>

【讨论】:

  • 这似乎没有解决任何问题,只是让字幕完全消失了
【解决方案3】:

id 属性不能在 DOM 元素中重复,因此如果您使用具有相同名称的 class 属性并使用每个函数,则每个函数不会在所有相同的 id 元素上运行,那么您的问题就解决了。我希望它对您有所帮助。

$('#projectThumbs img').each(function(){
  $('.project-title').append("<p>" + $(this).attr('alt') + "</p>");
    });
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
   <div id="projectThumbs">
    <img alt="myimae" 
src="http://psdandcode.com/themes/psd2code/images/logo.png">
    <img alt="mimage" 
 src="http://psdandcode.com/themes/psd2code/images/logo.png">
    <img alt="myimae" 
  src="http://psdandcode.com/themes/psd2code/images/logo.png">
    <img alt="myimag" 
 src="http://psdandcode.com/themes/psd2code/images/logo.png">

</div>
<div class="project-title"></div>

【讨论】:

  • 如果你有任何困惑,你可以问。我会根据你的要求修改代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2014-08-17
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多