首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jQuery中从div开始选择下拉文本的正确方式是什么?

在jQuery中从div开始选择下拉文本的正确方式是什么?
EN

Stack Overflow用户
提问于 2012-08-06 22:52:43
回答 3查看 123关注 0票数 2

我从一个div数组中动态地抓取一个选定的下拉选项的文本。当我这样做的时候:

代码语言:javascript
运行
复制
$("#divID").children("select").eq(0).find('option:selected').text();

一切都很好。然而,当我这样做的时候:

代码语言:javascript
运行
复制
$("#divID").children("select option:selected").eq(0).text();

它没有像预期的那样抓取文本。我想知道后一种获取文本的方法做错了什么。谢谢。

JSFiddle - First Approach (Works)

JSFiddle - Second Approach (Doesn't Work)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-06 22:58:17

你所做的事情的问题在于你使用了children

如果您将children更改为find,那么它可以完美地工作。原因是children只查找作为被操作集的直接子级的元素。因此,它将只返回#divID的直接子对象。如您所见,option元素不是直接子元素,因此不能返回它们。

代码语言:javascript
运行
复制
$("#divID").find("select option:selected").eq(0).text();

请参阅http://jsfiddle.net/nzhaD/5/

当然,这两者之间也有一些细微的区别。Cosnider这个HTML:

代码语言:javascript
运行
复制
<div id="divLocation">
    <div>            
        <select id="1"/>
    </div>
    <select id="2"/>
</div>

我已经删除了选项,但是您的原始选择器将获得id #2 (因为它是唯一的选择,它是#divLocation的子项,而我的选择器将获得第一个选定的选项,该选项大概在id #1中)。

因此,这个故事的寓意是,无论哪个选择器做你真正想做的事情,就做什么。:)

票数 4
EN

Stack Overflow用户

发布于 2012-08-06 22:57:45

我会这样做的:

代码语言:javascript
运行
复制
    value = $("#divLocation select option:selected").text();

我不知道哪种方法才是“正确的”。我认为我的很容易理解。所以,选择你认为容易阅读的那本书吧。如果性能是必需的,那么只需使用纯javascript,并让select有一个ID。

代码语言:javascript
运行
复制
document.getElementById("divLocationSelect").value;

http://jsfiddle.net/nzhaD/4/

票数 2
EN

Stack Overflow用户

发布于 2012-08-06 23:01:34

您可以执行以下操作:

代码语言:javascript
运行
复制
$("#divID").find("select option:selected").eq(0).text();

.children()方法与.find()的不同之处在于,.children()只向下遍历DOM树的一个级别,而.find()可以向下遍历多个级别以选择后代元素(孙子元素等)。也是。

请参阅.children()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11830716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档