4

我有一个类似于下面的标记的选择下拉菜单。

<select class="myselect" name="myname">
  <option value="0" disabled="disabled">0</option>
  <option value="1" disabled="disabled">1</option>
  <option value="2" disabled="disabled">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7" selected="selected" disabled="disabled">7</option>
</select>

我试图弄清楚如何使用 jQuery 来选择与“选定”元素最接近的“启用”同级。在上面的示例中,我想选择选项 6。我意识到我可以使用 .prev(),但这只会上升。有时用户选择的数字较小,我需要选择 next() 选项。

感谢你的帮助!

4

2 回答 2

1

一个选项是使用nextAllorprevAll方法,您可以检查所选元素的长度,如果存在下一个未禁用元素,则选择该元素,否则选择最近的前一个未禁用 元素。

var $o = $('.myselect option'),
    $s = $o.filter(':selected'),
    $next = $s.nextAll(':not(:disabled)').first();

if ($next.length) $next.foo();
else $s.prevAll(':not(:disabled)').first().bar();

http://jsfiddle.net/DsWh6/

于 2013-04-17T05:12:49.243 回答
0

您应该能够在事件功能中使用:

if( $( this ).val( ) == 7 ){

    $( enabledNode ) = $( this ).parent( ).first( ); // which brings you to val 1

    ... validation here

}
于 2013-04-17T05:05:31.557 回答