Javascript 使用jquery,当我单击一个链接时,如何引用它上面的select下拉列表?

Javascript 使用jquery,当我单击一个链接时,如何引用它上面的select下拉列表?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有一个链接,我听点击事件。在事件处理程序中,我想验证用户是否确实在该链接正上方的select下拉列表中做出了选择 我如何获得相对于链接的此选择项的引用,以便验证它 下面是html。事件处理程序位于“.Next”链接的单击位置 选择项目。 1. 2. 您可以使用同级选择器或父级选择器或两者的组合,但我不推荐使用,因为这类选择器往往很脆弱。更改html的结构时,选择器可能会失败 我认为最好给下拉列表提供一个id,然后使用jquery.data()将该id与链接关联起来 更新: 根据您发布的ht

我有一个链接,我听点击事件。在事件处理程序中,我想验证用户是否确实在该链接正上方的select下拉列表中做出了选择

我如何获得相对于链接的此选择项的引用,以便验证它

下面是html。事件处理程序位于“.Next”链接的单击位置


选择项目。
1.
2.


您可以使用同级选择器或父级选择器或两者的组合,但我不推荐使用,因为这类选择器往往很脆弱。更改html的结构时,选择器可能会失败

我认为最好给下拉列表提供一个id,然后使用jquery.data()将该id与链接关联起来

更新: 根据您发布的html,尝试使用最近的()过滤器

e、 g.在事件处理程序中:

function someEventHandler() {
  $(this).closest('select.dropdown')...
}

如果名称是已知的或只有一对链接下拉列表,您可以只参考“按名称选择”。

您可以使用同级选择器或父级选择器,或两者的组合,但我不推荐使用,因为这些类型的选择器往往很脆弱。更改html的结构时,选择器可能会失败

我认为最好给下拉列表提供一个id,然后使用jquery.data()将该id与链接关联起来

更新: 根据您发布的html,尝试使用最近的()过滤器

e、 g.在事件处理程序中:

function someEventHandler() {
  $(this).closest('select.dropdown')...
}

如果名称是已知的或只有一对链接下拉列表,则您只需参考按名称选择即可。

如果选择直接位于链接之前,则您可以使用
prev


如果HTML更复杂,那么您需要发布它。

如果选择直接在链接之前,那么您可以使用
prev


如果HTML更复杂,则需要发布它。

使用JQuery,最具体的选择器如下所示:

var reference = $("#Next3").prevAll("select.dropdown[name='myDropdown']:first")[0];
var selectedAny = reference.value != "";
代码说明:
$(“#Next3”)
指带有
id=“Next3”
.preval()
是一个根据选择器选择所有先前元素的函数(只是
prev
不起作用)


select.dropdown[name='myDropdown']:first
选择
select
元素的第一个(最近的)出现点,该元素是
dropdown
,名称等于
myDropdown
(区分大小写)。

使用JQuery,最具体的选择器如下所示:

var reference = $("#Next3").prevAll("select.dropdown[name='myDropdown']:first")[0];
var selectedAny = reference.value != "";
代码说明:
$(“#Next3”)
指带有
id=“Next3”
.preval()
是一个根据选择器选择所有先前元素的函数(只是
prev
不起作用)



select.dropdown[name='myDropdown']:first
选择
select
元素的第一个(最近的)出现点,哪个类是
dropdown
,名称等于
myDropdown
(区分大小写)。

能否显示相关的源代码?如果不查看文档结构,我将无法回答此特定案例的问题。您能否提供有关页面结构的更多信息?你有很多下拉选择还是只在链接上方的一个?它是否嵌套在任何其他标记中?定义“上面”。DOM结构和可视化布局是两件截然不同的事情。@Rob W-我已经用相关的html@SeventotheSeven-我已经用相关的HTMLC更新了问题,你能显示相关的源代码吗?如果不查看文档结构,我将无法回答此特定案例的问题。您能否提供有关页面结构的更多信息?你有很多下拉选择还是只在链接上方的一个?它是否嵌套在任何其他标记中?定义“上面”。DOM结构和可视化布局是两件截然不同的事情。@Rob W-我已经用相关的html@SeventotheSeven-我已经用相关的htmli更新了问题,我已经发布了相关的htmlprev。可能需要两个prev才能通过br标签$('.next').prev().prev()@code90-在这里使用prev()似乎很有技巧,好像我在以后的某个时候添加了一个
那么整个事情就要爆发了,我想我们需要看到更完整的html,就像kingjiv建议的那样。如果您有一个封闭的div标记,那么可以使用类似以下内容:$('.next').parent().find('select:first')。但是更多的html代码将有助于更好地查看结构以获得更好的答案。或者它可能是$('.next')。prev('select')我已经发布了相关的htmlprev应该可以工作。可能需要两个prev才能通过br标签$('.next').prev().prev()@code90-在这里使用prev()似乎很有技巧,好像我在以后的某个时候添加了一个
那么整个事情就要爆发了,我想我们需要看到更完整的html,就像kingjiv建议的那样。如果您有一个封闭的div标记,那么可以使用类似以下内容:$('.next').parent().find('select:first')。但是更多的html代码将有助于更好地查看结构以获得更好的答案。或者它可以是$('.next').prev('select'))问题是我的事件处理程序是基于类名的问题是我的事件处理程序是基于类名的问题是代码需要用于任何相对链接并进行选择,因此我无法为此实例硬编码。(因此问题是)问题是,代码需要用于任何相对链接并进行选择,因此我不能为这个实例硬编码。(问题就是这样)