jQuery对话框只显示一次

时间:2012-11-29 02:58:43

标签: jquery dialog

我有一个表格,其中包含来自用户的动态消息,管理员可以通过单击回复来回复这些消息。完美的工作。问题是在对话框中有用于打开用户消息的链接,因此他们可以看到完整的用户消息,与他们的回复相同(如果他们已经回复)。他们只能看到对话框ONCE。再次点击它时,它不显示。

任何帮助将不胜感激

foreach($content as $row)
{
    //print_r($row);
    echo '<tr data-id="'.$row['ConID'].'" input type="hidden" value="'.$row['ConID'].'">';
    echo '<td data-cn="'.$row['ConName'].'">'.$row['ConName'].'</td>';
    echo '<td data-em="'.$row['ConEmail'].'">'.$row['ConEmail'].'</td>';
    echo '<td data-cm="'.$row['ConMessage'].'" >'.substr($row['ConMessage'],0,30).'<a href="#" class = "open"> ...more</a><div class = "dialog"> <p>'.$row['ConMessage'].'</p></div></td>';
    echo '<td data-dt="'.$row['ConDate'].'">'.date('d/m/y', strtotime($row['ConDate'])).'</td>';
    if($row['Replied'] == 0){
        echo '<td data-rp="'.$row['Replied'].'">No</td>';
    }
    else{
        echo '<td><a href="#" class="openReply">See Reply</a><div class = "dialogReply"><p>'.$row['Reply'].'</p></div></td>';
    }
    if($row['Replied'] == 0){
        echo '<td><input type="button" class="replySender" id="replySender" value="Reply"/></td>';
    }
    else{
        echo'<td>Replied</td>';
    }
    echo '</tr>';
}

JQUERY

$(".dialog").hide(); $(".open").click(function(){
    $(this).next(".dialog").dialog();  
});
$(".dialogReply").hide(); $(".openReply").click(function(){
    $(this).next(".dialogReply").dialog();  
});

2 个答案:

答案 0 :(得分:1)

为什么第二次不起作用的原因是因为当你第一次“运行”$('#my_div')。dialog()时,这会将元素#my_div移动到body进入包装器(DIV),因此$ .next()将第二次失败,因为元素不再存在!我的建议是将ID设置为对话框并将这些ID保存在您的锚点()上。即。

<td>
    <a href="#" class="openReply" data-dlg-id="random-id-1">See Reply</a>
    <div class="dialogReply" id="random-id-1">
        <p>My Reply</p>
    </div>
</td>
<td>
    <a href="#" class="openReply" data-dlg-id="random-id-2">See Reply</a>
    <div class="dialogReply" id="random-id-2">
        <p>Other Reply</p>
    </div>
</td>

你的javascript可能看起来像:

$(".dialogReply").hide();

$(".openReply").click(function(){
      var $dlg = $('#'+ $(this).attr('data-dlg-id'));
      if ($dlg.hasData('dialog'))
        $dlg.dialog('open');
      else
        $dlg.dialog();
});

我希望这会有所帮助。最好!

答案 1 :(得分:0)

感谢大家的回复。我把它分类了。

所以点击后删除div。通过使用jquery clone()来修复它:

  

$( “对话”)隐藏();

     

$( “开”)。单击(函数(){        $(本)。接下来( “对话”)的clone()对话框()。 });            $( “dialogReply。”)隐藏()。            $( “openReply”)。点击(函数(){         $(本)。接下来( “dialogReply。”)的clone()对话框()。 });