使用jQuery模拟select元素

Mor*_*eza 22 jquery

我用这个代码模拟clickselect元素:

$(function(){
   $("#click").click(function(){
       $("#ts").click();
       //$("#ts").trigger("click");
   });
});
Run Code Online (Sandbox Code Playgroud)

和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"/>
Run Code Online (Sandbox Code Playgroud)

我测试clicktrigger,但都不起作用.

谢谢你的帮助.

Osc*_*car 35

好吧,你不能把click事件附加到HTML,select但你可以做这个棘手的事情......

看看这里:

现场演示:

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

  • 适合我.这很棒!但它不适用于IE 7. (2认同)
  • 不适用于FF ...和FF替代? (2认同)
  • IE 9,不起作用,IE 10不起作用,IE 11不起作用,FF最近,不起作用.我们有替代方案吗? (2认同)

A. *_*lff 17

这是我认为你能得到的最好的跨浏览器方法.在Safari,Firefox,Chrome和IE上测试过.对于Chrome,Oscar Jara的答案是要走的路. (更新:2016年10月13日)

$(function() {
    $("#click").on('click', function() {
        var $target = $("#ts");
        var $clone = $target.clone().removeAttr('id');
        $clone.val($target.val()).css({
            overflow: "auto",
            position: 'absolute',
            'z-index': 999,
            left: $target.offset().left,
            top: $target.offset().top + $target.outerHeight(),
            width: $target.outerWidth()
        }).attr('size', $clone.find('option').length > 10 ? 10 : $clone.find('option').length).change(function() {
            $target.val($clone.val());
        }).on('click blur keypress',function(e) {
         if(e.type !== "keypress" || e.which === 13)
            $(this).remove();
        });
        $('body').append($clone);
        $clone.focus();
    });
});
Run Code Online (Sandbox Code Playgroud)

请参阅jsFiddle演示


ade*_*neo 4

我认为这是最接近的:

$(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'});
       }
   });
});
Run Code Online (Sandbox Code Playgroud)

小提琴