我有一个类似于下面标记的选择下拉列表。
<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()选项。
感谢您的帮助!
答案 0 :(得分:1)
一个选项是使用nextAll
或prevAll
方法,如果下一个未禁用元素,您可以检查所选元素的长度 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();
答案 1 :(得分:0)
你应该能够在事件功能中使用:
if( $( this ).val( ) == 7 ){
$( enabledNode ) = $( this ).parent( ).first( ); // which brings you to val 1
... validation here
}