相关疑难解决方法(0)

检查select是否显示选项

我有以下HTML代码:

<select>
<option selected>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如何检查是否显示了<option>s <select>?例如,这被视为显示的<option>s <select>:

显示选择菜单的选项

这被认为是没有显示的<option>s <select>:

不显示选择菜单的选项


我试过这个:

$("#myselect").on("click", function() {
    if ($("#myselect option").length == 0) {
        console.log("not displayed");
    } else {
        console.log("displayed");
    } 
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="myselect">
<option selected>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

但控制台记录"始终显示".


那我该怎么做呢?


编辑1:

如何检查选择元素是否仍然"打开"/活动与jquery的答案不起作用,因为当我单击select元素以显示选项然后再次单击它时,即使select仍然聚焦,也不显示选项.


编辑2:

以防万一我不够明确,基本上我希望控制台记录"显示"或"不显示"用户点击select或者options

html javascript jquery

19
推荐指数
1
解决办法
2万
查看次数

与具有相同边框宽度和填充的 &lt;input&gt; 相比,&lt;select&gt; 具有额外的填充

input, select { padding: 2px; border: solid 1px red; }
Run Code Online (Sandbox Code Playgroud)
<input value="Foo">
<select><option>bar!</option></select>
Run Code Online (Sandbox Code Playgroud)

尽管它们都有相同的paddingborder-width,但结果<select>显然比相应的要高<input>。(在火狐浏览器中测试)

<select> 比 <input> 高,且具有相同的内边距和边框宽度

您能解释一下身高差背后的原因吗?如果我删除paddingborder-width规则,那么问题就会消失。不幸的是,这对于我的项目来说不是一个好的解决方案。

我希望拥有跨浏览器一致的像素完美布局,即使是移动浏览器也是如此。到目前为止,我一直保持与 for 不同的for padding,但如果我可以对两者使用一种设置,我会更喜欢。<select><input>

我们发现了一个简单的 CSS 规则来解决Firefox 中关于 s 的类似问题<button>。我知道这可能没那么简单,因为<select>我发布这个问题是为了确定答案。

css html-select padding

5
推荐指数
1
解决办法
1713
查看次数

标签 统计

css ×1

html ×1

html-select ×1

javascript ×1

jquery ×1

padding ×1