【问题标题】:Cannot loop jQuery dialogbox in array无法在数组中循环 jQuery 对话框
【发布时间】:2017-11-01 14:24:23
【问题描述】:

我在使用索引文件中的以下 div ID 代码在特定数组中设置 jQuery 对话框时遇到问题:

<div id="dialog"></div>

现在从一个数组生成一个对话框,该数组位于一个子文件夹的 javascript 文件中,代码如下:

"pins": [{
    "name": "A",
    "status": "Lorem Ipsum",
    "src": "http://test/images/pins/up.png"
  },
  {
    "name": "B",
    "status": "Lorem Ipsum",
    "src": "http://test/images/pins/up.png"
  },
  {
    "name": "C",
    "status": "Lorem Ipsum",
    "src": "http://test/images/pins/down.png"
  }
];


var pins = "<div id=dialog ></div>";
$(function() {
  $("#dialog").dialog({
    autoOpen: false,
    show: {
      effect: "blind",
      duration: 1000
    },
    hide: {
      effect: "explode",
      duration: 1000
    }
  });

  $("src").on("click", function() {
    $("#dialog").dialog("open");
  });
});

我想在 image-pin url 上使用 onclick 函数初始化 3 个对话框,加载 name-value 作为框的标题,将 status-value 作为框内的文本加载。

我已经尝试了一百种方法,但都没有成功。

【问题讨论】:

  • 我不确定我是否理解您想要实现的目标。您要初始化 3 个对话框吗?
  • 谢谢。我已经发布了更新。
  • 好的。您只生成一个静态对话框。循环在哪里?
  • 喜欢吗? for (i in 1:length(mydata$x) ) { if(src>=0) { src[i++] } else { src$y[i]

标签: javascript jquery arrays dialog jquery-ui-dialog


【解决方案1】:

逻辑是,为数组中的每一项生成img,在其上绑定click事件。当用户点击它时,你会将#dialog中的img的src替换为点击图片的src。最后,打开对话框。

如果我理解正确的话,应该是这样的:

var pins = [{
    "name": "A",
    "status": "Lorem Ipsum",
    "src": "https://images.pexels.com/photos/633276/pexels-photo-633276.jpeg?h=350&dpr=2&auto=compress&cs=tinysrgb"
  },
  {
    "name": "B",
    "status": "Lorem Ipsum",
    "src": "https://images.pexels.com/photos/633501/pexels-photo-633501.jpeg?h=350&dpr=2&auto=compress&cs=tinysrgb"
  },
  {
    "name": "C",
    "status": "Lorem Ipsum",
    "src": "https://images.pexels.com/photos/633548/pexels-photo-633548.jpeg?h=350&dpr=2&auto=compress&cs=tinysrgb"
  }
];

$.each(pins, function(i, pin) {
  $('body').append('<img src="' + pin.src + '" class="src" />');
});

$(function() {
  var dialog = $("#dialog").dialog({
    autoOpen: false,
    show: {
      effect: "blind",
      duration: 1000
    },
    hide: {
      effect: "explode",
      duration: 1000
    }
  });

  $("img").on("click", function() {
    dialog.find('img').attr('src', $(this).attr('src'));
    dialog.dialog("open");
  });
});
.src {
  width: 50px;
  height: 50px;
  border: 1px solid;
  margin: 10px;
}

#dialog img {
  max-width: 100%;
}
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div id="dialog">
  <img />
</div>

【讨论】:

  • 感谢莫什的解释。我用你的版本做了一些测试,让它在我想到的设置中工作。干杯
  • 我的荣幸?。请accept回答,以便对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多