jQuery对话框无法正常处理来自数据库的动态数据。我想打开从数据库中获取的多个数据的对话框。但问题是,当我点击任何链接打开特定对话框的特定id数据库表记录时,它也会打开所有以前的id的对话框。
例如,如果我点击id 2对话框,它会同时打开1和对话框。我也希望在对话框中下载一些内容。
jQuery代码:
$(document).ready(function() {
$(function() {
$(".dialog").dialog({
autoOpen: false,
maxWidth:600,
maxHeight: 500,
width: 600,
height: 300,
dialogClass: 'main-dialog-class',
modal: true
});
$("a.To").on("click", function() {
$(".dialog").dialog("open");
});
});
PHP代码:
<table>
<?php foreach($tList as $ts) : ?>
<div class="dialog" title="Dialog Form">
<?php
$sql1="select * from table where ID='".$ts["ID"]."'" ;
$result1=mysqli_query($link,$sql1);
while($rows=mysqli_fetch_array($result1)){
echo $rows["t1"];
?>
<a href="Download.php?filename=<?php echo $rows['Path'] ;?>" target="_blank"><?php echo $rows['Name'];?></a><br/>
<?php
}
?>
</div>
<tr>
<td style="display:none">
<?php echo $ts["ID"]; ?>
</td>
<td>
<a href="#" class="To" >
<?php echo $ts["Title"]; ?></a>
</td>
<td>
<?php echo $ts["t1"]; ?>
</td>
<td>
<?php echo $ts["t2"]; ?>
</td>
</tr>
</table>
答案 0 :(得分:1)
对于初学者来说,你的HTML看起来就像是将对话框嵌套在表格内的<div>
中,而不是嵌套在单元格中(这应该是浏览器中的错误)。
但是在你的javascript中,你需要一种专门识别每个对话框的方法。您报告的错误是有道理的;通过选择$('.dialog')
,您说“使用类名”对话框“选择页面上的每个元素。”
我认为最简单的方法是将您的JavaScript更改为:
$("a.To").on("click", function() {
$(this).find(".dialog").dialog("open");
});
然后将对话框移动到PHP中每行的单元格中。
否则,您可以为每个对话框选择唯一标识符,并将其重命名为id
,而不是class
。
修改的
是的,您可以在PHP中为选择器添加唯一ID,在data
中添加相同的ID,然后使用jQuery选择器找到它们。
在你的PHP中:
<td>
<a href="#" class="To" data-dialogfinder='<?php echo $ts["ID"]; ?>'>
<?php echo $ts["Title"]; ?>
</a>
</td>
然后,在你jQuery:
$("a.To").on("click", function() {
var diabox='#'+$(this).data("dialogfinder");
$(diabox).dialog("open");
});
答案 1 :(得分:0)
我不知道这是否是完整的代码,但是在你发布的内容中你错过了 endforeach; (关闭foreach():在开头打开)。