如何访问特定div并获取其中select的选项?代码无返回值求解
问题分析与解决方案
你的问题出在jQuery选择器的写法错误上,$('#navbar-left > div[2]')这种写法是不对的——[2]是属性选择器的语法,它会去寻找带有2这个属性的<div>元素,而不是第二个子div。jQuery里要选择第N个子元素,得用专门的索引选择器。
下面给你几种正确的写法,都能拿到目标<select>里的所有<option>:
方法1:使用:eq()索引选择器(jQuery专属,索引从0开始)
:eq(index)会匹配指定索引位置的元素,因为第二个div的索引是1(第一个是0),所以可以这么写:
// 先拿到目标select,再获取里面的option var countries = $('#navbar-left > div:eq(1) > select.nav-select'); var options = countries.find('option'); // 或者一步到位直接选option var options = $('#navbar-left > div:eq(1) > select.nav-select > option');
方法2:使用:nth-child()选择器(CSS标准语法,索引从1开始)
:nth-child(n)是CSS原生的选择器,它匹配父元素的第n个子元素,这里第二个div就是:nth-child(2):
var options = $('#navbar-left > div:nth-child(2) > select.nav-select > option');
方法3:利用类名直接定位(更简洁可靠)
因为目标<select>有nav-select类,而且它的父div是custom-dropdown,你也可以跳过索引,直接通过类名链式选择,这样结构变动时更不容易出错:
var options = $('#navbar-left .custom-dropdown:nth-child(2) .nav-select option'); // 或者如果只有一个带nav-select的select在navbar-left里,甚至可以更简单: var options = $('#navbar-left .nav-select option');
最后验证一下:拿到options之后,你可以用console.log(options.length)看看是否获取到了正确数量的option元素。
内容的提问来源于stack exchange,提问作者Soleil
相关产品推荐
相关产品推荐

