如何停止创建无尽的事件序列?

时间:2018-12-30 23:45:24

标签: javascript jquery

我有一组用户偏好设置,其中有一个监听器用于更改。

一些偏好需要交互。例如,如果我将首选项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();在各个地方都没有运气...

如何设计出自己的方式?任何帮助/方向表示赞赏。

0 个答案:

没有答案