我的 html 带有 <select>
标签和<option>
标签。我以这种方式获得某个选项/值:
$(targetElement).children("option[text=" + Text + "]").val();
哪里targetElement
是我的<select>
元素和Text
是我要查找的选项的文本。
当select
中有多个选项时,这可以正常工作。 ( on jsFiddle ),但是当只有一个选项时,我得到 undefined
(on jsFiddle)!
谁能告诉我为什么当只有一个选项时它不起作用,以及如何解决它?
最佳答案
[name=value]
语法旨在检查元素的属性。例如,它将用于匹配 FooInAttribute,但不匹配下面的 FooInContents。
<option value="42" text="FooInAttribute">FooInContents</option>
我无法告诉你为什么当有多个 <option>
时它会起作用标签可用,但是 :contains
在这两种情况下都有效。请尝试这样做,但正如 InviS 所指出的,这假设列表中没有选项包含另一个选项的全文(即,如果您有一个名为“汉堡”的选项,则不得有另一个“汉堡和薯条”):
$(targetElement).children("option:contains('" + text + "')").val();
关于尝试仅获取 <option> 元素时发生 jQuery 未定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8126410/