无法在数组中循环 jQuery 对话框
Cannot loop jQuery dialogbox in array
我在使用索引文件中的以下 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 作为文本在框内。
我已经尝试了一百种方法都没有成功。
逻辑是,为数组中的每一项生成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>
我在使用索引文件中的以下 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 作为文本在框内。
我已经尝试了一百种方法都没有成功。
逻辑是,为数组中的每一项生成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>