Jquery element.PrevUtil(“选项:包含()”)未返回预期结果

Jquery element.PrevUtil(“选项:包含()”)未返回预期结果,jquery,Jquery,假设我无法控制HTML的格式,即: <select id="foods"> <option value='0'>Some Vegetables</option> <option value='1'>-Carrot</option> <option value='2'>Some Fruits</option> <option value='3'>-Apple</option>

假设我无法控制HTML的格式,即:

<select id="foods">
  <option value='0'>Some Vegetables</option>
  <option value='1'>-Carrot</option>
  <option value='2'>Some Fruits</option>
  <option value='3'>-Apple</option>
  <option value='4'>-Orange</option>
  <option value='5' selected='selected'>-Strawberry</option>
<select>
但是,这将返回与-Orange相对应的
parentVal=4

var parentVal = strawberry.prevUntil("option:contains('-')").val()
var parentVal = strawberry.prevUntil("option:contains('Fruits'))").prev().val()
…给我
parentText=未定义

var parentVal = strawberry.prevUntil("option:contains('Fruits')").val()
…为我提供
parentVal=4
,对应于-Orange

var parentVal = strawberry.prevUntil("option:contains('-')").val()
var parentVal = strawberry.prevUntil("option:contains('Fruits'))").prev().val()
…为我提供了parentVal=3,对应于-Apple

发生什么事了?显然,我误解了
.previtil()
是如何工作的,或者至少它在
元素的上下文中是如何工作的。选择任何水果时,是否有任何关于正在发生的事情以及如何返回“一些水果”的输入?

使用
.prevAll()
而不是
.previtil()

演示

var草莓=$(“#食品”).find(“:selected”)
var parentVal=草莓.prevAll(“选项:包含('Fruits')”).val()
console.log(parentVal)

一些蔬菜
-胡萝卜
一些水果
-苹果
-橙色的
-草莓的

老兄,这段时间只是使用了错误的功能。你能解释一下为什么
.prevAll()
有效,而
previtil()
无效吗?我想我只是有一个基本的误解。看看这个链接,它解释得比我感谢你更好!我在这里找到的任何相关问题都使用了
.previtil()
,jQuery文档中的描述也不太清楚。那篇文章澄清了一切。