element.prevUntil(“option:contains()”)不返回预期结果

问题描述 投票:1回答:1

假设我无法控制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>

我试图获得草莓的“父母”选项,这将是“一些水果”。我假设我可以这样做:

var strawberry = $('#foods).find(':selected')
// This gives me strawberry.text() = '-Strawberry', as expected
var parentVal = strawberry.prevUntil("option:not(:contains('-'))").val()

但是,这将返回parentVal = 4,对应于-Orange。

var parentVal = strawberry.prevUntil("option:contains('-')").val()

...给我parentText = undefined

var parentVal = strawberry.prevUntil("option:contains('Fruits')").val()

...给我parentVal = 4,对应-Orange。

var parentVal = strawberry.prevUntil("option:contains('Fruits'))").prev().val()

...给我parentVal = 3,对应-Apple。

这是怎么回事?显然我误解了.prevUntil()是如何工作的,或者至少它是如何在<option>元素的背景下起作用的。关于什么在进行的任何输入以及如何在选择任何水果时返回'Some Fruits'?

jquery
1个回答
1
投票

使用qazxsw poi而不是qazxsw poi

.prevAll()

演示

.prevUntil()
var parentVal = strawberry.prevAll("option:contains('Fruits')").val()
© www.soinside.com 2019 - 2024. All rights reserved.