gpt4 book ai didi

javascript - Select2 trigger ("change") 创建一个无限循环

转载 作者:行者123 更新时间:2023-11-30 15:52:14 25 4
gpt4 key购买 nike

假设页面上有两个 select2 元素,都使用“onChange”。为了以编程方式在您使用的一个 select2 元素中设置一个值

$('#id1').val('xyz').trigger('change');

如果当您在这两个元素中选择一个时,您想要将另一个重置为初始值,则 onChange 事件会被值设置触发,系统进入无限循环。如果你使用

$('#id1').val('xyz').trigger('change.select2')

最佳答案

要避免无限循环,请使用触发方法参数区分事件调用,在触发方法使用中添加参数,在事件回调中检查参数是否存在,当参数存在时,表示事件是从代码触发的,如果不存在,则表示是来自ui的事件。

在这个代码示例中检查它是如何工作的。

$(function(){

$('#id1').on("change",function(e, state){

//we check state if exists and is true then event was triggered
if (typeof state!='undefined' && state){
console.log('change #1 is triggered from code');
return false;
}

console.log('change #1 is from ui');


});

$('#id2').on("change",function(e, state){


//we check state if exists and is true then event was triggered
if (typeof state!='undefined' && state){
console.log('change #2 is triggered from code');
return false;
}

console.log('change #2 is from ui');

});


});


/**TEST CODE TO TRIGGER CHECK **/
setTimeout(function(){
$('#id1').val('1').trigger('change',[true]); //here is paramater - [true]
$('#id2').val('2').trigger('change',[true]);//here is paramater - [true]

$('#id1').val('3').trigger('change',[true]); //here is paramater - [true]
$('#id2').val('3').trigger('change',[true]);//here is paramater - [true]

},1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>Select 1</span>
<select id="id1">
<option val="1" >1</option>
<option val="2" >2</option>
<option val="3" >3</option>
</select>

<span>Select 2</span>
<select id="id2">
<option val="1" >1</option>
<option val="2" >2</option>
<option val="3" >3</option>
</select>

关于javascript - Select2 trigger ("change") 创建一个无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com