jQuery对话框不起作用

时间:2015-05-31 04:44:36

标签: php jquery html jquery-ui-dialog

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>

2 个答案:

答案 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():在开头打开)。