【问题标题】:jQuery combine selectorsjQuery 组合选择器
【发布时间】:2012-06-19 22:27:04
【问题描述】:

如何组合这两个选择器:

$("td.listas select:last option:selected")

这行不通!

我想要实现的是:

  • 从具有类 listastd 获取 select 输入
  • 获取被选中option

注意事项:

  • 在这个 td 中,我有两个 select 输入。

代码工作:

    var selectprimeiro = $('td.listas select:first');
    var selectsegundo = $('td.listas select:last option');
    selectsegundo.prop("selected",true);
    var selected = $("td.listas select:last option:selected");
    selected.each(function(){
        selectprimeiro.append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
        selected.remove();
    });

【问题讨论】:

  • 我只看到一个选择器。无论如何,关于选择器的问题应该用标记和你想要选择的元素的解释来补充,因为这就是选择器的作用:选择元素。
  • 您是否尝试选择 tdlistas 中最后一个 select 元素的选定选项?
  • 如果您可以控制 html,请给每个选择一个 id。它会让事情变得更简单
  • 顺便说一句,你的选择器确实“工作”:jsfiddle.net/4m3jG/1

标签: jquery html jquery-selectors


【解决方案1】:

我想你想要

var lastSelectedOptionElement = $("td.listas select option:selected").last();

首先获得所有选定的选项,然后选择最后一个。 Gratuitous live example | source

您可能很想使用option:last:selected,但这不会奏效(除非碰巧选择了列表中的最后一个选项),因为option 必须是两者 :last :selected.


更新

重新编辑:

在这个 td 中,我有两个选择输入。

如果不是多选select元素,获取选中的option元素:

opt = $("td.listas select:first option:selected"); // The first one
// or
opt = $("td.listas select:last option:selected");  // The last one -- this is your original selector

如果是多选,结合以上两种技术:

// The *last* selected option in the *first* select list:
opt = $("td.listas select:first option:selected").last();

// The *last* selected option in the *last* select list:
opt = $("td.listas select:last option:selected").last();

// The *first* selected option in the *first* select list:
opt = $("td.listas select:first option:selected").first();

// The *first* selected option in the *last* select list:
opt = $("td.listas select:last option:selected").first();

【讨论】:

  • @silentw:是多选吗?您正在寻找的实际最终价值是多少?不清楚。
  • 这不应该等同于 OP 具​​有的 to 选择器(只要它不是多选)?在这里工作正常:jsfiddle.net/4m3jG/1。我认为问题出在其他地方。
  • 我的代码中有错字。我需要在变量中获得第二个选择,所以我可以支持全选。我错过了option
  • @FelixKling:他们的选择器获取最后一个 select 框的选定选项。最初的问题并不清楚这就是他们想要的。我的(第一个)选择器做了一些不同的事情:在一个多选框中,它获取所选选项的 last (据我推测,在没有任何相反的数据的情况下,它是唯一的select 框)。鉴于他们的编辑,我仍然完全不清楚 OP 想要什么。我已经把它分散在上面了。 :-)
  • @silentw:目前还不清楚:你到底想得到什么?在您的评论中,您说过您想要选择(与选项无关),但恐怕短语 "...so I could prop to select all" 我不清楚。
【解决方案2】:

你的选择器看起来是正确的,你可能会出错的地方是获取值,你只需要在它的末尾添加.val()

var lastSelVal = $("td.listas select:last option:selected").val();

粗略演示: jsfiddle.net/Marcel/4m3jG/

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多