使用 jquery,当我单击链接时,如何引用其上方的选择下拉列表?

发布于 2024-12-05 01:03:18 字数 456 浏览 0 评论 0原文

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

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

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

 <select class="dropdown" name="myDropdown">
 <option value="">Select Item . . .</option>
 <option value="1">1</option>
 <option value="2">2</option>
 </select>

 <br>
 <a id="Next3" class="Next" href="">Next</a>&nbsp;

I have a link and I listen to the click event. In the event handler, I want to validate that the user has actually made a choice on the select dropdown right above this link.

How can I get a reference to this select item relative to my link so I can validate it?

here is the html below. the event handler is on the click of the ".Next" link.

 <select class="dropdown" name="myDropdown">
 <option value="">Select Item . . .</option>
 <option value="1">1</option>
 <option value="2">2</option>
 </select>

 <br>
 <a id="Next3" class="Next" href="">Next</a> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

﹉夏雨初晴づ 2024-12-12 01:03:18

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

var reference = $("#Next3").prevAll("select.dropdown[name='myDropdown']:first")[0];
var selectedAny = reference.value != "";

代码说明:
$("#Next3") 指的是 id="Next3" 的链接
.prevAll() 是一个根据选择器选择所有先前元素的函数(仅 prev 不起作用)。

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

Using JQuery, the most specific selector looks like:

var reference = $("#Next3").prevAll("select.dropdown[name='myDropdown']:first")[0];
var selectedAny = reference.value != "";

Explanation of code:
$("#Next3") refers to the link with id="Next3"
.prevAll() is a function which selects all previous elements according to a selector (justprev doesn't work).

select.dropdown[name='myDropdown']:first selects the first (closest) occurence of the selectelement, which class is dropdown and name equalsmyDropdown(case sensitive).

归属感 2024-12-12 01:03:18

如果选择直接在链接之前,那么您可以使用 prev http://api. jquery.com/prev/

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

If the select is directly before the link then you can use prev http://api.jquery.com/prev/

If the HTML is more complicated then that you'll need to post it.

半寸时光 2024-12-12 01:03:18

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

我认为如果你给你的下拉菜单一个id,然后使用jquery.data()将该id与链接关联起来会更好。

更新:
鉴于您发布的 html,请尝试使用closest() 过滤器。

例如,在您的事件处理程序中:

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

如果名称已知或只有一对链接下拉列表,您只需按名称引用选择即可。

You can use sibling or parent selectors or a combination both but I would not recommend it since those kinds of selector tend to be fragile. When you change the structure of your html the selector might fail.

I think it would be better if you give your dropdown an id, then associate that id with the link using jquery.data().

Update:
Given the html you posted, try using the closest() filter.

e.g. in your event handler:

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

If the name is known or there is only one pair of link-dropdown you can just refer to the select by name then.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文