Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作2个JavaScript函数';什么是相互排斥的?_Javascript_Jquery - Fatal编程技术网

如何制作2个JavaScript函数';什么是相互排斥的?

如何制作2个JavaScript函数';什么是相互排斥的?,javascript,jquery,Javascript,Jquery,我有两个带有多个选项的select元素,我将它们链接在一起,以便在另一个元素更改时自动更新 // ########### Linked Labour Select Boxes $('body').on('change', '#labourList > li .labourerID', function() { var id = $(this).val(); $(this).parent().find('.labourerName').val(id).change(); })

我有两个带有多个选项的select元素,我将它们链接在一起,以便在另一个元素更改时自动更新

// ########### Linked Labour Select Boxes
$('body').on('change', '#labourList > li .labourerID', function() {
    var id = $(this).val();
    $(this).parent().find('.labourerName').val(id).change();
});


$('body').on('change', '#labourList > li .labourerName', function() {
    var id = $(this).val();
    $(this).parent().find('.labourerID').val(id).change();
});

目前,一种方法会触发另一种方法,使我的页面速度有点慢,我如何避免这种情况?

我使用了一个标志来表示select上发生的更改是由于脚本的用户造成的

看看这个

当用户更改一个select时,在第二个select中不会执行任何操作,因此更改链将断开

var script\u triggered\u change=false;
$(“#一”).更改(函数(){
console.log(“称为One”);
如果(脚本触发更改)返回;
script\u triggered\u change=true;
$(“#2”).val($(“#1”).val()).change();
script\u triggered\u change=false;
});
$(“#2”).更改(函数(){
console.log(“称为二”);
如果(脚本触发更改)返回;
script\u triggered\u change=true;
$(“#一”).val($(“#二”).val()).change();
script\u triggered\u change=false;
});

1.
2.
3.
1.
2.
3.

我使用了一个标志来说明select上发生的更改是由于脚本的用户造成的

看看这个

当用户更改一个select时,在第二个select中不会执行任何操作,因此更改链将断开

var script\u triggered\u change=false;
$(“#一”).更改(函数(){
console.log(“称为One”);
如果(脚本触发更改)返回;
script\u triggered\u change=true;
$(“#2”).val($(“#1”).val()).change();
script\u triggered\u change=false;
});
$(“#2”).更改(函数(){
console.log(“称为二”);
如果(脚本触发更改)返回;
script\u triggered\u change=true;
$(“#一”).val($(“#二”).val()).change();
script\u triggered\u change=false;
});

1.
2.
3.
1.
2.
3.

试试这个

var once=false;
$('select')。关于('change',函数(e){
如果(一次){
一次=假;
返回;
}
一次=真;
$('select').not(this.val)($(this.val()).change();
});
select,选项{
填充物:5px;
}

1.
2.
3.
4.
5.
彼得
汉斯
弗里茨
桑德拉
杰西

试试这个

var once=false;
$('select')。关于('change',函数(e){
如果(一次){
一次=假;
返回;
}
一次=真;
$('select').not(this.val)($(this.val()).change();
});
select,选项{
填充物:5px;
}

1.
2.
3.
4.
5.
彼得
汉斯
弗里茨
桑德拉
杰西

您可以发布JSFIDLE吗?验证
新值和
旧值。如果两者相同,则不要调用
change
。否则调用
change
。您需要在两个事件中验证这一点。我认为您面临的问题是每个事件都在不断调用其他事件。这是无限的。在触发
change
之前检查条件是我现在能想到的最好的事情。为什么要显式地触发
change()
事件?使用而不是
.change()
。阅读文档,找出原因。哦,我不知道那样做是不好的@斜视,我在文档中找不到任何反对它的东西你知道我在哪里可以找到东西吗?感谢您发布JSFIDLE?验证
新值
旧值
。如果两者相同,则不要调用
change
。否则调用
change
。您需要在两个事件中验证这一点。我认为您面临的问题是每个事件都在不断调用其他事件。这是无限的。在触发
change
之前检查条件是我现在能想到的最好的事情。为什么要显式地触发
change()
事件?使用而不是
.change()
。阅读文档,找出原因。哦,我不知道那样做是不好的@斜视,我在文档中找不到任何反对它的东西你知道我在哪里可以找到东西吗?谢谢,我不完全确定你在这里做什么,我认为你在调用一个特定的元素,当这两个元素中的任何一个发生变化时。是这样吗?它看起来确实很优雅,很漂亮。我已经通过使用好的旧标志解决了我的问题。我不完全确定您在这里做什么,我认为您在调用一个特定的元素更改函数,当这两个元素中的任何一个发生更改时。是这样吗?它看起来确实很优雅,很漂亮。我已经通过使用好的旧标志解决了我的问题。我怎么能不想到这个,我怎么了,编程101。。谢谢:)我怎么能不想到这个,我怎么了,编程101。。谢谢:)