你如何在foreach循环中使用simplemodal,以便它不重复相同的信息?
示例:
foreach($ret as $v)
{
<div id='osx-modal'>
<input type='button' name='osx' value='View' class='osx demo'/>
</div>
<div id="osx-modal-content">
<div class="close"><a href="#" class="simplemodal-close">x</a></div>
<div id="osx-modal-data">
<div id="toon_box">
<div id="toon_name">
<?php echo $v['toon_name'];?>
</div>
<div id="toon_avatar">
<?php echo '<img src="' . $v['avatar'] . '" alt="" />';?>
</div>
</div>
</div>
}
从网站上的用户提取元数据,并在单独的模式中显示每个用户的元数据。为了澄清,我们说foreach重复10次,因为数据库中有10个用户。这将为每个用户创建10个单独的按钮,当您单击模式框时会弹出其中的数据。
问题是,当您在每个模态框中单击每个按钮时,它是同一个用户。你如何设置它,以便每个模态框显示正确的用户元数据。我已经检查过simplemodal.js中的持久性是否设置为false,它是。
答案 0 :(得分:1)
您在同一模型框中拥有相同元数据的原因是因为这行代码
<input type='button' name='osx' value='View' class='osx demo'/>
使用class
非常通用,因此您应该使用id
代替每个按钮都有自己的uniqid
<input type='button' name='osx' value='View' id='os1'/>
<input type='button' name='osx' value='View' id='os2'/>
现在你的<div id="osx-modal-content">
也会是这样的
<div id="osx-modal-content1">
<div id="osx-modal-content2">
您的javascript
看起来像这样
$("os1").addEvent("click", function(){
var SM = new SimpleModal();
SM.show({
"title":"Title",
"contents": $("#osx-modal-content1").html()
});
});
$("os2").addEvent("click", function(){
var SM = new SimpleModal();
SM.show({
"title":"Title",
"contents": $("#osx-modal-content2").html()
});
});
可以使用看到一切映射的方式???这是你在每个模型中实现每个内容的人
如果您需要更多信息,请告诉我
编辑1个示例
<?php
$x = 0;
foreach ( $ret as $v ) {
$x ++;
$content = "
<script type=\"text/javascript\">addModal($x)</script>
<div id='osx-modal'>
<input type='button' name='osx' value='View' id='osx{$x}'/>
</div>
<div id=\"osx-modal-content{$x}\">
<div class=\"close\"><a href=\"#\" class=\"simplemodal-close\">x</a></div>
<div id=\"osx-modal-data\">
<div id=\"toon_box\">
<div id=\"toon_name\">
{$v['toon_name']}
</div>
<div id=\"toon_avatar\">
<img src=\"{$v['avatar']}\" alt=\"\" />
</div>
</div>
</div>";
}
?>
<script type="text/javascript">
function addModal(x)
{
$("osx" + x).addEvent("click", function(){
var SM = new SimpleModal();
SM.show({
"title":"Title",
"contents": $("#osx-modal-content" + x).html()
});
});
}
</script>
答案 1 :(得分:0)
感谢standup75终于让它工作了!
jQuery(function ($) {
var OSX = {
container: null,
init: function () {
$("[name=osx]").click(function (e) {
e.preventDefault();
$(this).parent().next().modal({
overlayId: 'osx-overlay',
containerId: 'osx-container',
closeHTML: null,
minHeight: 80,
opacity: 65,
position: ['0',],
overlayClose: true,
onOpen: OSX.open,
onClose: OSX.close
});
});
},