【问题标题】:jQuery - Reuse variable in a selectjQuery - 在选择中重用变量
【发布时间】:2011-10-05 13:55:12
【问题描述】:

说我有:

HTML:

<select id="mySelect"><option value="0">option-1</option>...</select>

JS:

var select = $("#mySelect");

我再往下,我想做的事:

var val = $("#mySelect option:selected").val();

我试过这个,但它似乎只返回文本,而不是 value 属性:

$(select + "option:selected").val();
$(select + "option:selected").attr("value"); // also doesn't work

【问题讨论】:

  • 你不能连接一个 jQuery 对象和一个字符串。
  • 这并不能真正回答我的问题:如何重用对象来获取选定的选项值?

标签: javascript jquery select jquery-selectors


【解决方案1】:

试试 .find() 方法。

var opt = $("#mySelect");

var val = opt.find("option:selected").val();

(只是不能使用“select”,因为它在很多语言中都有保留)

这可能会更有效一些,因为您不是每次都进行新的查找。

【讨论】:

  • 这行得通。查找效率如何?这是最优化的方式吗?
  • 查找是我能想到的最有效的方法。
  • 根据我的阅读,最好只进行一次查找,而不是每次都进行一次新查找,因为它必须遍历整个 DOM。从您已经拥有的对象出发可以最大限度地减少搜索时间。
【解决方案2】:

试试

$(select).find("option:selected").val();

【讨论】:

    【解决方案3】:

    试试这个:

    var strSelect = "#mySelect";
    var val = $(strSelect + " option:selected").val();
    

    【讨论】:

    • 这不仅仅是缺少的空间,select var 只是一个字符串。 Nernian 在使用 .find() 方法时有一个更好的解决方案,如果您需要 select 实际上是一个 jQuery 对象(即,如果您已经对其执行一些操作),这很有用。
    • 真的需要这个空间吗?如果是这样,则 jQuery 文档中的一些示例是错误的:api.jquery.com/val
    • 抱歉,不确定option:selected 部分中的空间是如何得到的。我指的是空间之前 option.
    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多