1

编辑 A:这不是一个 jquery 问题,而是一个jquery Mobile问题。

编辑B:我更改了标题...最初我询问如何专门触发“点击”事件,但如果您想重新创建jqm:选择菜单选项,显然“点击”事件不是正确的事件。

如何以编程方式在 jquery 移动选择菜单上触发事件?

<select id       = 'my_select'   
        name     = 'my_select'   
        onchange = 'gf_handle_change( this.value );' >
  <option id = 'option_A'  value = 'A'> A </option>
  <option id = 'option_B'  value = 'B'> B </option>
</select>

<script>
  function gf_fire_event( args_val )
    { alert( 'test : ' + jQuery( '#option_' + args_val ) ) ; 
      jQuery( '#option_' + args_val ).trigger( 'click' ) ;
    }
  function gf_handle_change( args_val )
    { alert( args_val )  ;
    }
  gf_fire_event( 'A' ) ;
</script>

这不起作用。

4

2 回答 2

1

这是一个例子:

$(document).on('pagebeforeshow', '#index', function(){       
    $("#test-button").on( "click", function(event, ui) {
      $('#my_select option#option_B').trigger('click');    
    });

    $("#my_select option").each(function(){
        $(this).on( "click", function(event, ui) {
          $(this).attr('selected' , true);
          $('#my_select').selectmenu('refresh');                
        });         
    });    
});

工作 jsFiddle 示例:http: //jsfiddle.net/Gajotres/RZ68b/

还有一件事,不要将 onclick="... 或 onchange="... 与 jQuery Mobile 一起使用,这可能会导致事件触发出现问题。始终以编程方式绑定您的事件。

于 2013-02-08T12:46:25.773 回答
1

那会做到的

function gf_fire_event( args_val )
{
    //Select an option
    $('#my_select option[value=' + args_val +']').attr("selected", "selected");
    //Refresh jQM select menu
    $('#my_select').selectmenu('refresh');
    //Trigger change event
    $('#my_select').trigger('change');
}

见工作jsFiddle

于 2013-02-08T13:58:48.873 回答