【问题标题】:php loop pop up box and dialog from jquery来自jquery的php循环弹出框和对话框
【发布时间】:2014-05-15 06:03:18
【问题描述】:

您好,我正在使用一个名为 CodeIgniter 的框架及其 MVC 示例。我需要一个弹出框,它将显示应用程序的子值,但是每次回显时我的对话框都不起作用。但你看我需要为不同的值循环对话框。我的代码在下面

<?php 

        foreach($people as $row){
          echo"<div id='dialog' title='Basic dialog'>".$row->app_name."</div>";
          echo "<button id='opener'>".$row->app_name."</button>";}
                                ?>

我的 javascrip 代码来自 jquery

  <script>
      $(function() {
        $( "#dialog" ).dialog({
          autoOpen: false,
          show: {
            effect: "blind",
            duration: 1000
          },
          hide: {
            effect: "explode",
            duration: 1000
          }
        });

        $( "#opener" ).click(function() {
          $( "#dialog" ).dialog( "open" );
        });
      });
      </script>

【问题讨论】:

    标签: php jquery codeigniter dialog popup


    【解决方案1】:

    使用事件委托

    $(document).on("click" ,  "#opener" ,function() {
              $( "#dialog" ).dialog( "open" );
     });
    

    【讨论】:

    • 因为 id 是唯一的,但在你的情况下,它为什么不工作的人并不是唯一的
    【解决方案2】:

    更新代码如下:

    <?php 
        $i = 1;
        foreach($people as $row){
          echo"<div id='dialog". $i."' title='Basic dialog'>".$row->app_name."</div>";
          echo "<button id='opener". $i."'>".$row->app_name."</button>";
        ?>
        <script>
            $(function() {
              $( "#dialog<?php echo $i?>" ).dialog({
                autoOpen: false,
                show: {
                  effect: "blind",
                  duration: 1000
                },
                hide: {
                  effect: "explode",
                  duration: 1000
                }
              });
    
              $( "#opener<?php echo $i?>" ).click(function() {
                $( "#dialog<?php echo $i?>" ).dialog( "open" );
              });
            });
        </script>
        <?php
         $i++;
        }
    ?>
    

    基本上会有多个弹出窗口,您需要为每个弹出窗口和按钮提供唯一的 id。

    【讨论】:

    • 它不是一个对话框。它只是在对话框中列出文件。我需要一个弹出窗口
    【解决方案3】:

    在这种情况下使用 id 不是一个好主意...您应该将 id 更改为 class

     echo "<button class='opener'>".$row->app_name."</button>";
    

    然后

    $( ".opener" ).click(function() {
         $( "#dialog" ).dialog( "open" );
    });
    

    id 是唯一的,你应该使用一个类


    享受:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多