jQuery,选择最近的兄弟与属性(下一个或上一个)

时间:2013-04-17 05:00:22

标签: jquery select

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

<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为“selected”元素选择最接近的“已启用”兄弟。在上面的例子中,我想选择选项6.我意识到我可以使用.prev(),但这只会上升。有时用户选择的数字较小,我需要选择next()选项。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

一个选项是使用nextAllprevAll方法,如果下一个未禁用元素,您可以检查所选元素的长度 exists选择该元素,否则选择最接近的 not disabled 元素。

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/

答案 1 :(得分:0)

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

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

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

    ... validation here

}