jQuery 尝试仅获取元素时出现未定义错误<option>



我有一个<select>标签和<option>标签的html。我以这种方式获得一个特定的选项/值:

$(targetElement).children("option[text=" + Text + "]").val();

其中targetElement是我的<select>元素,Text是我想要找到的选项的文本。

select(在jsFiddle上)有多个选项时,这可以正常工作,但是当只有一个选项时,我得到undefined(在jsFiddle上)!

有谁能告诉我为什么当只有一个选择时它不起作用,我该如何修复它?

[name=value]语法用于检查元素的属性。例如,它将用于匹配FooInAttribute而不是下面的FooInContents。

<option value="42" text="FooInAttribute">FooInContents</option>

我不能告诉你为什么当有多个<option>标签可用时它会起作用,但:contains在两种情况下都有效。试试这个,但正如InviS指出的,这假设列表中没有选项包含另一个选项的全文(即,如果你有一个名为"Burger"的选项,你就不能有另一个"Burger and Fries"):

$(targetElement).children("option:contains('" + text + "')").val();

您还可以使用.filter()方法:

var txt = "Bar";
var x = $('select').children().filter(function() {
    return $(this).text() == txt;
}).val();
console.log(x);

这将返回一个以'Bar'作为文本的值

试试这个:

$(function(){
  var lastOptionValue = $('select > option:last').val();
  alert(lastOptionValue);
});

你可以在这里试试。

编辑:

对不起,我没注意……

这是你正确的例子:

$(function(){
  text = 'Foo';
  var $last = $('select>option').filter(function(){
    return $(this).text() == text;
  }).last();
  if ($last.length > 0){
    alert($last.val());
  }
});

您可以在filter()匿名函数中添加更多功能。例如RegExp或者其他你需要的东西

相关内容

  • 没有找到相关文章

最新更新