Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在使用循环时,除了第一个项目外,所有项目都会丢失jQuery功能_Php_Jquery_Twitter Bootstrap_Loops_Modal Dialog - Fatal编程技术网

Php 在使用循环时,除了第一个项目外,所有项目都会丢失jQuery功能

Php 在使用循环时,除了第一个项目外,所有项目都会丢失jQuery功能,php,jquery,twitter-bootstrap,loops,modal-dialog,Php,Jquery,Twitter Bootstrap,Loops,Modal Dialog,在下一页中,开始一个元素,使用户可以裁剪和保存图像。它只适用于循环中的第一项,但是,对于后面的所有sql行,单击图像不会打开模式对话框 我没有任何重叠的标签,我已经彻底检查过了。我已经移动了js脚本标记,也没有得到任何更改。这有共同的原因吗?哪里是第一个进行故障排除的地方?在PHP中使用不同类型的循环会更好吗 <?php ob_start(); session_start(); require_once ('verify.php'); ?

在下一页中,开始一个元素,使用户可以裁剪和保存图像。它只适用于循环中的第一项,但是,对于后面的所有sql行,单击图像不会打开模式对话框

我没有任何重叠的标签,我已经彻底检查过了。我已经移动了js脚本标记,也没有得到任何更改。这有共同的原因吗?哪里是第一个进行故障排除的地方?在PHP中使用不同类型的循环会更好吗

        <?php 
    ob_start();
    session_start();
    require_once ('verify.php'); 
    ?>
    <head>
    <title>Edit Listings</title>
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <link href="../css/cropper.min.css" rel="stylesheet">
    <link href="../css/crop-avatar.css" rel="stylesheet">
    </head>
    <body>
    <div id="container">
      <div id="head">
        <ul id="menu">
        </ul>
      </div>
      <div id="area"></div>
      <div id="main_listings">
        <h1 align="left">Edit listings page</h1>
        <?php
    include ("../dbcon2.php");
    $conn = new mysqli($servername, $username, $password, $dbname);
    $sql="SELECT * FROM listings ORDER BY date_added DESC";
    $result = $conn->query($sql);
        ?>
        <?php while ($data=mysqli_fetch_assoc($result)):
                $id = $data['id'];
                $id = $data['title'];
                $listing_img = $data['listing_img'];
        ?>
        <div id="edit_listing">
          <div id="edit_left">
            <div class="container" id="crop-avatar">
              <div class="avatar-view" title="Change the avatar"> <img src="<?php echo $listing_img; ?>" alt="<?php echo $title; ?>"> </div>
              <div class="modal fade" id="avatar-modal" tabindex="-1" role="dialog" aria-labelledby="avatar-modal-label" aria-hidden="true">
                <div class="modal-dialog modal-lg">
                  <div class="modal-content">
                    <form class="avatar-form" method="post" action="edit-avatar.php" enctype="multipart/form-data">
                      <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                        <h4 class="modal-title" id="avatar-modal-label">Listing Main Image</h4>
                      </div>
                      <div class="modal-body">
                        <div class="avatar-body">
                          <div class="avatar-upload">
                            <input class="avatar-src" name="avatar_src" type="hidden">
                            <input class="avatar-data" name="avatar_data" type="hidden">
                            <input name="avatar_id" type="hidden" value="<?php echo $id; ?>">
                            <label for="avatarInput">Local upload</label>
                            <input class="avatar-input" id="avatarInput" name="avatar_file" type="file">
                          </div>
                          <div class="row">
                            <div class="col-md-9">
                              <div class="avatar-wrapper"></div>
                            </div>
                            <div class="col-md-3">
                              <div class="avatar-preview preview-lg"></div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="modal-footer">
                        <button class="btn btn-default" type="button" data-dismiss="modal">Close</button>
                        <button class="btn btn-primary avatar-save" type="submit">Save</button>
                      </div>
                    </form>
                  </div>
                </div>
              </div>
              <div class="loading" tabindex="-1" role="img" aria-label="Loading"></div>
            </div>
          </div>
          <div id="edit_right">
            <form name="edit_date" action="edit_list.php" method="post" id="edit_list_data">
              <input name="title" type="text" id="title" tabindex="1" value="<?php echo $title; ?>" size="60" maxlength="57"/>
              <input type="hidden" name="id" value="<?php echo $id; ?>" />
              <input type="submit" formaction="edit_list.php" value="Submit" />
            </form>
          </div>
        </div>
        <?php endwhile;$conn->close();?>
        <div class="spacer"></div>
      </div>
    </div>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> 
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
    <script src="../js/cropper.min.js"></script> 
    <script src="../js/crop-avatar.js"></script>
    </body>
    </html><?php // Flush the buffered output.
        ob_end_flush();
    ?>

问题的根源是双重的(这背后可能还有其他问题)

首先,HTML中有大量重复的id值

下面是一些DUP:
编辑列表
容器
编辑左
裁剪化身
化身模式
,等等

给定的ID只能在整个HTML文档中使用一次。所有这些id值都需要更改为类名(可以根据需要多次使用),然后任何引用它们的代码或CSS都需要更改为引用类名,而不是id值

当您执行以下操作时,这将在代码中发挥作用:

new CropAvatar($("#crop-avatar"));
由于这是一个id引用,它将只选择页面中具有该id的第一个元素。因此,只有第一个列表处于活动状态。如果将HTML更改为:

<div class="container crop-avatar">
为此:

 $(".crop-avatar").each(function() {
     new CropAvatar($(this));
 });
这将为每个列表调用
CropAvatar()
构造函数



这是我看到的前两个主要问题。我不能保证没有其他问题需要解决,但在前两个问题得到解决之前,这些问题是看不见的。

所以,这是HTML,但您实际询问的jQuery代码在哪里?我不是问jQuery本身。我在问你自己编写的自定义Javascript。你指的这个循环在哪里?我们需要您实际询问的Javascript/jQuery循环的代码。如果您想评估PHP循环的结果,请使用View/Source并在浏览器中查看生成的HTML(例如PHP的结果)。如果您想帮助理解为什么在浏览器中单击某个东西不会触发JS事件处理程序,那么我们必须查看生成的HTML的代表性样本和连接事件处理程序的JS代码。如果您不清楚,PHP只在服务器上运行。它的工作是生成页面。然后,该页面被传递到浏览器,单击仅在浏览器中处理。模式不在来自服务器的页面源中。它是由页面上的一些javascript动态生成的。您可以在任何浏览器调试器中使用DOM检查器查看它,但我不知道为什么这对您很重要。您的问题可能与连接点击事件处理程序的javascript代码有关。我没有看到在您包含的JS代码中安装任何点击处理程序。
var example = new CropAvatar($("#crop-avatar"));
 $(".crop-avatar").each(function() {
     new CropAvatar($(this));
 });