繁体   English   中英

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

[英]Jquery set select option by .val() does not fire on('change', )

JS小提琴

<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'); 
});


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

您还可以使用.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. --> 

您需要手动触发事件,

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

小提琴

在你的情况下,它不会触发更改事件,它是赋值,你必须调用更改事件。 改变如下
你必须像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." );
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM