jquery - 选择框下拉列表的事件?

标签 jquery html

我有一个 select 元素,如下所示:

<select>
    <option value="1">1</option>
    <option value="2">2</option>
</select>

我想要的是每次下拉选择框以显示选项时触发一个事件,然后在发生相反情况时触发另一个事件。

我尝试过这个:

$("select").click(function () {
    $("#textMe").val("open");
});

$("select").change(function() {
    $("#textMe").val("closed");
});

但是我有几个问题:

  1. 如果用户由于某种原因确实选择了一个选项,那么我的change事件似乎永远不会触发 - 为什么?

  2. 如果用户打开选择框,但随后单击页面上的其他位置来关闭选择框(他们实际上没有选择选项,因此没有任何更改),我不知道如何捕获该情况事件。


这是一个 jsFiddle

最佳答案

对于您的情况来说并不那么容易,但您可以执行以下操作来捕获所有需要的事件:

jsfiddle

var opened = false;

$("select").on("click", function () {
    if(!opened){
        $("#textMe").val("open");
        opened = true;
    }
});

$("select").on("change", function() {
    $("#textMe").val("change");

    setTimeout(function(){
        opened = false;
    },0);
});

$("body").on("click", function(e) {
    if(!$(e.target).is("select")) {
        $("#textMe").val("OUTSIDE");
        opened = false;
    }
});

关于jquery - 选择框下拉列表的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683587/

相关文章:

javascript - 使用 jQuery UI 可拖动时给元素一个临时的固定宽度?

javascript - 从 UnityWebGL jslib 返回字符串

javascript - document.getElementById.value 不起作用

html - 需要帮助设计事件链接

JavaScript/jQuery 为什么这不起作用?

php - 使用 jQuery (ajax) 和 PHP 插入我的数据库

javascript - 在功能成功时播放声音,并且不要重叠声音(多功能)

javascript - 在播放和播放YouTube iframe嵌入时触发事件

javascript - 所选选项值的 jquery 验证警报

html - CSS:如何将按钮分组放置在网页的一行中