在 Jquery 中检索复杂的嵌套值

Posted

技术标签:

【中文标题】在 Jquery 中检索复杂的嵌套值【英文标题】:Retrieving complicated nested values in Jquery 【发布时间】:2013-12-05 03:04:28 【问题描述】:

我有一个可以动态生成包含图像和六个输入的 li 元素的表单。生成的每一行都采用以下形式:

<li>
    <div id="ShowcaseEntry" class="IndexEntry">
        <div class="IndexImage">
            <img src="/static/graphics/no-image.png" >
        </div>
        <div class="IndexCaption">
            <label>Caption</label><br />
            En <input type="text" class="ShowcaseCaption_en" value="">
            Es <input type="text" class="ShowcaseCaption_es" value="">
            <br />
            <label>Link</label><br />
            En <input type="text" class="ShowcaseLink_en" value="">
            Es <input type="text" class="ShowcaseLink_es" value="">
            <br/>
            <a href="" class="removeimg">Remove</a></li>
        </div>
    </div>
</li>

无序列表的 ID 为 ShowcaseImages。

以前图像不在自己的分区内,提交表单时有一个 JQuery 函数收集所有图像源名称:

var galleryimagesinput = [];
$("#ShowcaseImages li img").each(function()  galleryimagesinput.push($(this).attr('src')) );

然后我可以通过表单中的单个输入值发送数组,以便在另一端进行反汇编。

但是,现在图像位于 div 中,没有收集 src。如何收集 src 以及如何收集每个 li 中每个标题和链接文本的值,将它们放入自己的数组中(一个用于图像,一个用于标题,一个用于链接文本)

我知道这可能只是链接选择器的问题,但我完全迷失了它。从文本框直接发送到表单的实际输入值并不重要,因为我希望 Jquery 将它们收集起来以放入其他隐藏输入中。

【问题讨论】:

新的html长什么样子? 【参考方案1】:

这应该可行:

$("#ShowcaseImages li").each(function()  
    galleryimagesinput.push($(this).find('img').attr('src'));
);

【讨论】:

如果li img 选择器不起作用...为什么会这样?基本一样 @charlietfl - 因为在 OP 的原始选择器中,他正在遍历列表项中的所有图像。这个选择器会迭代列表项,然后抓取每个项中的图像。 Pat 和这个都可以工作,但我已经设法调整这个来获取标题和链接文本。都修改了,谢谢。【参考方案2】:

这应该为#ShowcaseImages ul 中的每个图像运行该函数

var galleryimagesinput = [];
$("#ShowcaseImages img").each(function()  
  galleryimagesinput.push($(this).attr('src')) 
);

我刚刚从您的原始函数中删除了“li”。

【讨论】:

以上是关于在 Jquery 中检索复杂的嵌套值的主要内容,如果未能解决你的问题,请参考以下文章

在表格单元格中显示复杂内容时,Quasar qTable 的 q-td 上的 Id 值

BigQuery:从复杂的嵌套 JSON 键值创建列

使用 C# 在复杂的 JSON 数组中查找和打印重复项

如何从复杂的 JSON API 返回嵌套值

如何使用 jquery 从复杂的输入名称中获取值

Python中嵌套For循环的时间复杂度