使用jQuery模拟单击select元素

使用jQuery模拟单击select元素,jquery,Jquery,我将此代码用于模拟单击上的选择元素: $(function(){ $("#click").click(function(){ $("#ts").click(); //$("#ts").trigger("click"); }); }); HTML代码是: <select id="ts"> <option value="1">1</option> <option value="2">Lorem

我将此代码用于模拟
单击
上的
选择
元素:

$(function(){
   $("#click").click(function(){
       $("#ts").click();
       //$("#ts").trigger("click");
   });
});
HTML代码是:

<select id="ts">
    <option value="1">1</option>
    <option value="2">Lorem ipsum dolor s.</option>
    <option value="3">3</option>
</select>

<input type="button" id="click" value="Click"/>

1.
同侧盲蝽。
3.
我测试
单击
触发器
,但两者都不起作用


谢谢你的帮助。

这是你能得到的最接近的了,我想:

$(function(){
   $("#click").on('click', function(){
       var s = $("#ts").attr('size')==1?5:1
       $("#ts").attr('size', s);
   });
   $("#ts option").on({
       click: function() {
           $("#ts").attr('size', 1);
       },
       mouseenter: function() {
           $(this).css({background: '#498BFC', color: '#fff'});
       },
       mouseleave: function() {
           $(this).css({background: '#fff', color: '#000'});
       }
   });
});

好吧,您不能将
单击
事件附加到html
选择
中,但您可以做这件棘手的事情

请看这里:

现场演示:


这是我认为您可以获得的最好的跨浏览器方法。在Safari、Firefox、Chrome和IE上进行测试。对于Chrome,Oscar Jara的答案是正确的。(更新:10-13-2016)

有关Oscar Jara变体,请参见

小更新(使用
切换


我最终在选项本身上设置了所选属性。
然后甚至在select元素上触发更改。

我有一个复杂的
select
元素,由前面的
select
元素中给出的答案提供。选项由AJAX提供,由
onchange
事件触发

出于我的需要,为了用模拟用户行为的“隐藏魔术事件”预先填充答案(以密集测试的方式),我在“我的魔术事件”中使用了以下jQuery代码。它通过其索引选择选项:

// Quick feed of my Car Form    
document.getElementById('carbrand').selectedIndex = 30; // "PORSCHE"
document.getElementById('carbrand').onchange();

var timeoutID = window.setTimeout(function () {

    document.getElementById('model').selectedIndex = 1; // "911"
    document.getElementById('model').onchange();

    var timeoutID = window.setTimeout(function () {
        document.getElementById('energy').selectedIndex = 1; // "SUPER"
        document.getElementById('energy').onchange();
    } , 200);

} , 200);

谢谢你的纠正;-)

您希望发生什么?单击事件不会触发选择打开,如果您希望这样做的话。@Elen我希望打开选择下拉菜单如上所述-它不会打开选择。。。。你可以模拟
Enter
hit on
select
我以前没见过这个,对我有用,但有些东西告诉我它不是跨浏览器的+1.无论如何,它在
chrome
中工作得很好,让我看看我是否能在其他浏览器上做得更好:-)我猜你会需要一些浏览器使用createEventObject,但它可能仍然会有问题,我不认为有一种方法可以在任何地方都适用,至少我没有看到createEvent方法被广泛使用。这太棒了!然而,它在IE7上不起作用。IE9不起作用,IE10不起作用,IE11不起作用,FF最近的,不起作用。我们有其他选择吗?请注意,我们不鼓励这样做,因此答案应该是搜索解决方案的终点(而不是另一个参考文献的中途停留,它往往会随着时间的推移变得过时)。请考虑在这里添加一个独立的概要,将链接作为参考。我今晚使用了这个代码,但是有一些困难:左边和顶部的线都必须为边距偏移(使用框大小:边框如果重要的话)。更困难的是,我已经将select css设置为height:20px,常规select会正确覆盖该下拉列表。使用此代码时,它没有覆盖。将css切换到最小高度:20px足以解决我的问题。一个小时的头发拉扯值得分享:-)它不理解在FF中输入hiting。@Fanky更新了代码和JSFIDLE。这是你的意思吗?谢谢这很有用$(“x”).val('09.5')$(#x”)。触发(“变更”);
// Quick feed of my Car Form    
document.getElementById('carbrand').selectedIndex = 30; // "PORSCHE"
document.getElementById('carbrand').onchange();

var timeoutID = window.setTimeout(function () {

    document.getElementById('model').selectedIndex = 1; // "911"
    document.getElementById('model').onchange();

    var timeoutID = window.setTimeout(function () {
        document.getElementById('energy').selectedIndex = 1; // "SUPER"
        document.getElementById('energy').onchange();
    } , 200);

} , 200);