选择框上的单击触发器在jQuery中不起作用

sas*_*asa 26 jquery

如何使用触发器打开下拉列表?

这是不起作用的代码:

$('select').trigger('click');
Run Code Online (Sandbox Code Playgroud)

只是为了注意 - mousedown和mouseup也不起作用.

小智 11

        $('select').children('option').each(function() {
            if ($(this).is(':selected'))
            { $(this).trigger('change');  }
        });
Run Code Online (Sandbox Code Playgroud)

  • 这可能会引发您可能不想要的其他附加事件。 (2认同)

Dar*_*rov 9

你想要实现的目标是不可能的.即使您触发了单击,下拉列表也不会打开,就像用户点击它一样.如果要使用新值更改当前选定的值,可以使用val函数.我想唯一的解决方案是select使用div 模拟元素的整个UI外观.


Jon*_*han 7

我花了一段时间但找到了解决方案:

(仅限Chrome和Safari)

function open(elem) {
    if (document.createEvent) {
        var e = document.createEvent("MouseEvents");
        e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        elem[0].dispatchEvent(e);
    } else if (element.fireEvent) {
        elem[0].fireEvent("onmousedown");
    }
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/oscarj24/GR9jU/

  • 关.这适用于Chrome和Safari,但在Firefox或IE中无效. (5认同)

izo*_*can 5

没有正确的方法可以通过编程方式单击下拉菜单。

您可以通过以下方式选择一个选项:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

如果你想模拟用户点击:你必须按照@Renso所说的那样进行:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected').trigger('change');
Run Code Online (Sandbox Code Playgroud)