element.prevUntil("选项:contains()")不返回预期结果

时间:2018-02-28 07:03:20

标签: 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>
  <option value='4'>-Orange</option>
  <option value='5' selected='selected'>-Strawberry</option>
<select>

我正在努力让#34;父母&#34;草莓的选择,这将是一些水果&#39;。我假设我可以这样做:

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>元素的背景下工作的。关于什么事情以及我如何返回的一些意见和一些水果&#39;何时选择任何水果?

1 个答案:

答案 0 :(得分:1)

使用.prevAll()

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

<强>演示

&#13;
&#13;
var strawberry = $('#foods').find(':selected')
var parentVal = strawberry.prevAll("option:contains('Fruits')").val()

console.log(parentVal)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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>
&#13;
&#13;
&#13;