我有一组用户偏好设置,其中有一个监听器用于更改。
一些偏好需要交互。例如,如果我将首选项A更改为“关闭”,则首选项D也应显示为“关闭”。
我意识到我所拥有的是一个简单的实现-在所有首选项都是独立的情况下才有效。但是,如果用户更改了首选项A,而我的代码检查了他们的选择,然后又为他们更改了首选项D,那么我将无休止地触发事件。如何围绕我创建的这个陷阱优雅地设计?
$('.updateUserDetails').on('change', function (e) {
console.log('Detected change in user prefs...');
var chromeLog = $("#loggingModeAccount").is(':checked') ? 1 : 0;
var historyPosition = parseInt($("#historyPosDD").val(), 10);
if (chromeLog === 0){
console.log('Turning history OFF in Chrome...');
$("#historyPosDD").val("127");
historyPosition = 127; // Set to default
} else {
console.log('Chrome logging ON...');
$("#historyPosDD").val("3");
historyPosition = 3; // Set to default
});
#loggingModeAccount和#historyPosDD都具有此类。 updateUserDetails。因此,当我的代码根据对#loggingModeAccount的更改来更新$(“#historyPosDD”)。val时,我会创建一个无限循环。
我尝试过包含e.stopPropagation();在各个地方都没有运气...
如何设计出自己的方式?任何帮助/方向表示赞赏。