jQuery 每个函数迭代选择的问题

发布于 2024-10-30 06:59:39 字数 652 浏览 2 评论 0原文

我有 3 个选择,有几个选项。当一个选项更改时,我想检查所有其他选择,无论它们是否也被选中(selected =“selected”)。所有选择都采用相同的形式。

到目前为止,我有以下 javascript 来做到这

$("#form").change(function(event){  
 $(this).find("select").each(function(){
    alert( $(this+"option:selected").length );
 });
});

一点 基本上遵循这种方法: 检查是否使用 jQuery 选择了选项,如果没有选择默认值

警报似乎根据单个 $(this) 选择元素给了我 1 或 0,但奇怪的是总计为2(选择最后一个选择后警报 3 次 2。第一次选择后警报 3 次 0,第二次选择后警报 3 次 1,最后一次选择后警报 3 次 2)。我希望它发出警报,例如 0 0 0,然后是 1 0 0,然后是 1 0 1,最后是 1 1 1。

知道这是如何发生的以及如何实现想要的吗?谢谢。

I have 3 selects with a couple of options. When an option is changed I want to check all of the other selects, whether they are also selected or not (selected="selected"). All of the selects are in the same form.

So far I have the following javascript to do that

$("#form").change(function(event){  
 $(this).find("select").each(function(){
    alert( $(this+"option:selected").length );
 });
});

Basically following this approach: Check if option is selected with jQuery, if not select a default

The alert doenst seem to give me 1 or 0 based on the individual $(this) select element, but strangely counts up to 2 (alerts 3 times 2 after the last select is selected. After the first select it alerts 3 times 0, after the second 3 times 1, and 3 times 2 on the last). I want it to alert for example 0 0 0, then 1 0 0 then 1 0 1 and finally 1 1 1.

Any idea how this comes and how to accomplish the wanted? thx.

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

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

发布评论

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

评论(2

ˉ厌 2024-11-06 06:59:39

您的内部选择器不正确。它应该是:

$(this).find("option:selected").length

您不能将 dom 元素添加到选择器(因为它们不是字符串)。您最终会得到一个看起来像“Object objectoption:selected”的选择器,因为它会隐式调用 .toString() 方法,因为它与双重目的 +< 一起使用/代码> 运算符。

jQuery 选择器必须是格式良好的 CSS3 选择器。

Your inner selector is incorrect. It should be:

$(this).find("option:selected").length

You can't prepend a dom element to a selector (since they are not strings). You'll end up with a selector that looks something like "Object objectoption:selected" since it will implicitly call the .toString() method as it is being used with the dual purpose + operator.

jQuery selectors need to be well-formed CSS3 selectors.

远山浅 2024-11-06 06:59:39

this+"option:selected" 不是有效的选择器。尝试:

$(this).find("option:selected").length

this+"option:selected" is not a valid selector. Try:

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