javascript - 无法在数组中循环 jQuery 对话框

标签 javascript jquery arrays dialog jquery-ui-dialog

我在使用索引文件中的以下 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");
  });
});

我想在图像 pin url 上使用 onclick 函数初始化 3 个对话框,将名称值加载为框的标题,将状态值加载为框内的文本。

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

最佳答案

逻辑是,为数组中的每个项目生成 img ,并为其绑定(bind) 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>

关于javascript - 无法在数组中循环 jQuery 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057115/

相关文章:

Java:ArrayList:通过索引确定条目是否存在

javascript - 我应该如何将 redux 与不会被重用的嵌套子组件一起使用?

javascript - 带组合框的 ExtJS 分页

javascript - 什么是 "top level JSON arrays",为什么它们存在安全风险?

javascript - 如何在 firebase 中链接电话号码后重定向?

javascript - html5 audioElement 的多个实例,可以用 $(this) 完成吗?

javascript - 委托(delegate)点击 Canvas 到图像映射

javascript - jQuery 触发事件首先附加在子项上,然后是其父项的事件

javascript - 如何创建一个内部有数组的动态对象,使其不会被覆盖?

c - 如何在 C 中使用带有数组的 while 循环?