【问题标题】:Break on switch cases is like being omitted开关盒上的断点就像被省略了
【发布时间】:2019-02-25 17:43:08
【问题描述】:

运行 switch 语句时出现问题。如你所见each spot is a different case in a switch statement.

单击菜单按钮以获取有关第一个位置(案例 1)a modal/popup window is displayed 的一些信息时,应该是这样。但是对于案例 2,会显示两个模态,it 's like it also triggers case 1

这是一段代码:

function setInfo(hotspot){

switch (hotspot){
    case 1:
        $("#erg").click(function() { 
        $.dialog({
              title: 'Info',
              content: 'Εικονοστάσι στη βάση του βράχου.',
              theme: 'dark',
              offsetTop:'1000',
              boxWidth:'20%',
              useBootstrap: false,
                });
                                   })

        break;

    case 2:
        $("#erg").click(function() { 
        $.dialog({
              title: 'General Info',
              content: 'Content',
              columnClass: 'medium',
              type:'blue',
              useBootstrap: false,
                 });
                })
        break;

    case 3:
        $("#erg").click(function() { 
        $.dialog({
              title: 'Info',
              content: 'Σπηλαιώδες ασκητήριο του Αγίου Γρηγορίου.',
              theme: 'dark',
              offsetTop:'1000',
              boxWidth:'20%',
              useBootstrap: false,
                });
                                   })
        break;


  default:
        $('#screenshot0').css("display", "inline");
        break;
}

我正在为对话框模式使用 jQuery 插件。很抱歉其内容的希腊字符,非常感谢。

【问题讨论】:

  • 你确定“热点”是一个数字,它是否在控制台上显示任何错误?
  • 您是否使用1 调用,看到1 个对话框然后立即使用2 调用,然后单击显示两个对话框? 每次运行代码时都会添加越来越多的点击处理程序,而无需关闭旧的点击处理程序。先用2 运行,你会没事的。使用1 运行两次,您将在 1 上获得 2 个对话框。
  • 请注意,如果您多次调用setInfo,则会将多个侦听器添加到相关元素中。否则,我想我会在case #s 之后从console.logging 开始,看看哪些行正在运行。

标签: javascript jquery switch-statement


【解决方案1】:

每次运行代码时都会添加越来越多的点击处理程序,而无需关闭旧的点击处理程序。

您可以使用.off 在添加新的点击处理程序之前关闭之前的点击处理程序

$("#erg").off("click");

更新代码:

function setInfo(hotspot) {

  $("#erg").off("click");

  switch (hotspot) {
    case 1:
      $("#erg").click(function() {
        $.dialog({
          title: 'Info',
          content: 'Εικονοστάσι στη βάση του βράχου.',
          theme: 'dark',
          offsetTop: '1000',
          boxWidth: '20%',
          useBootstrap: false,
        });
      })

      break;

    case 2:
      $("#erg").click(function() {
        $.dialog({
          title: 'General Info',
          content: 'Content',
          columnClass: 'medium',
          type: 'blue',
          useBootstrap: false,
        });
      })
      break;

    case 3:
      $("#erg").click(function() {
        $.dialog({
          title: 'Info',
          content: 'Σπηλαιώδες ασκητήριο του Αγίου Γρηγορίου.',
          theme: 'dark',
          offsetTop: '1000',
          boxWidth: '20%',
          useBootstrap: false,
        });
      })
      break;


    default:
      $('#screenshot0').css("display", "inline");
      break;
  }

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 2013-12-04
    • 2012-07-26
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多