通过.val()的Jquery set select选项不会触发('更改',)

时间:2015-10-07 12:14:24

标签: javascript jquery

JS Fiddle

<select id="panel" >
    <option value=1>One</option>
    <option value=2>Two</option>
    <option value=3>Three</option>
</select> 
<button id="button">Click me</button> <br> 

$('#button').click(function(){
  $('#panel').val(3); 
}); 
$('#panel').on('change',function(){
  alert('Hi'); 
});


有人知道如何让这些东西有效吗?

3 个答案:

答案 0 :(得分:6)

其他您可以使用.trigger()

  

描述:执行附加到的所有处理程序和行为   给定事件类型的匹配元素。

$('#button').click(function() {
  $('#panel').val(3).trigger("change");
});
$('#panel').on('change', function() {
  alert('Hi');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="panel">
  <option value=1>One</option>
  <option value=2>Two</option>
  <option value=3>Three</option>
</select>
<button id="button">Click me</button>
<!--click will change the select. But it doesnt fire the on change function. -->

答案 1 :(得分:2)

您需要手动触发事件

$('#panel').val(3).change();

Fiddle

答案 2 :(得分:1)

在你的情况下,它不会触发更改事件,它是赋值,你必须调用更改事件。改变如下
你必须使用喜欢 HTML:

<select class="panel" >
                                                                                   <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
                                                                                </select> 
<button id="button">Click me</button> <!--click will change the select. But it doesnt fire the on change function. -->

JQUERY:

$('#button').click(function(){
    $('.panel').val(3);
    $( ".panel" ).change();
});
 $( ".panel" ).change(function() {
  alert( "Handler for .change() called." );
});