Javascript jQuery如何选择第一个非隐藏的选择选项

Javascript jQuery如何选择第一个非隐藏的选择选项,javascript,jquery,html,Javascript,Jquery,Html,以下内容在jQuery 1.9和1.10+之间的行为有所不同: <select id="s1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> $('#s1 option[value=1]').hide(); $('#s1').v

以下内容在jQuery 1.9和1.10+之间的行为有所不同:

<select id="s1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

$('#s1 option[value=1]').hide();
$('#s1').val('');
这段代码的思想是在隐藏一些选项(包括当前选定的选项)后,选择第一个非隐藏选项

由于jquery1.10+的$'s1'.val;不再选择第一个非隐藏选项,而.val工作正常

尝试以下方法没有帮助,因为SealDead索引和.Fr..Var都考虑隐藏选项:

$s1.propselectedIndex,0

$'s1 option'。first.prop'selected',true

我想到的下一件事也是由建议的也不起作用,因为:visible选择器对于select选项不能正常工作

$'s1选项:可见'.first.prop'selected',true

寻找一些通用方法,不依赖于特定值的知识以及隐藏了哪些选项来实现与$'s1'.val相同的行为;在旧jQuery中。

尝试以下操作:

<select id="s1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

$('#s1 option[value=1]').hide();

var firstVisibleValue = '';
$('#s1').children().each(function(){  //iterate options

    //check if option is visible - if not set to display none, which is what `.hide` does.
    if($(this).css('display') != 'none'){  
        firstVisibleValue = $(this).val();
        return false;   //stop iterating
    }
});
$('#s1').val(firstVisibleValue);
试试这个代码

$('#s1 option[value="1"]').hide();

$('#s1').find('option').each(function()
 {
if($(this).is(':visible'))
{
    $(this).attr("selected","selected");
    return false;
}
 });

根据其他人的回答/评论汇编如下:

$('#s1 option').each(function () {
    if ($(this).css('display') != 'none') {
        $(this).prop("selected", true);
        return false;
    }
});
也许是这样:

$('#s1').find("option:not([hidden]):eq(0)");
简而言之:

$('#s1').find("option:not(:hidden):eq(0)");

您可以使用类轻松地完成此操作

$'s1选项[value=1]'。隐藏; $'s1 option[value=1]'。addClass'hidden'; $'s1选项[value=1]'。removeClass'visible' $'s1'.val; $'s1.visible:first'.val; 1. 2. 3.
你为什么要隐藏选择?你的问题的真正最终目的是什么?你几乎是在重复你的问题吗@phpLearner是的,因为它的配方不好,被标记为duplicate@Ian-您建议删除/读取它们吗?删除将在此处起作用。改为全局firstVisibleValue=$this.val;它可能只是$'s1'.val$this.val;不管怎样,我开始考虑重新生成整个框而不是隐藏/显示opists':可见'不起作用,恰好像$s1选项:VisiBuff'是的。它可以工作,但应采用以下格式:$'s1'。findoption:not:hidden:eq0;应该是:hiddenIn什么版本?如图所示,在1.9.1和1.10.0版本中,它都可以使用[hidden]属性选择器正常工作。