1

这是一个引导模式,我将 AJAX 请求的结果放入

<div class="modal hide" id="myModal">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">×</button>
    <h3>Modal header</h3>
  </div>
  <div id="modal-body"></div>
  <div class="modal-footer">
    <a href="#" class="btn" data-dismiss="modal">Close</a>
  </div>
</div>

javascript代码看起来像这样

<script type="text/javascript">
  $('#myModal').modal('hide');
  $('div.divBox a').click(function(){
    var vendor = $(this).text();
    console.log(vendor);
    $('#myModal').on('show', function(){          
      $.ajax({
        type: "GET",
        url: "ip.php",
        data: "id=" + vendor,
        success: function(html){
          $("#modal-body").html(html);              
        }
      });           
    });
  });
  $('#myModal').on('hide', function () {
    $("#modal-body").empty();
    <?php unset($_GET); ?>;
  })
</script>

ip.php文件

锚链接代码如下所示

           <tbody>
              <?php foreach ($rowarr as $k => $v) { ?>
                <tr>
                  <td><?php echo $k ?></td>
                  <td>
                    <div class="divBox">
                      <a data-toggle="modal" href="#myModal"><?php echo $v; ?></a>
                    </div>
                  </td>
                </tr>
              <?php } ?>
            </tbody>

$k 是一个数字。$v 是一个包含空格和特殊字符的名称。

console.log(vendor) 显示了我在 CDT 中单击的链接的文本。但是模态的输出发生了变化。它遍历我之前单击的所有链接文本,并不断替换它们,最后以最新的链接文本结束。

因此,如果按此顺序单击链接,控制台输出将如下所示

Microsoft Corporation
IBM Corp
Hewlett-Packard
Apple

模式中的文本将以

Array ( [id] => Microsoft Corporation )

然后替换为

Array ( [id] => IBM Corp )

然后替换为

Array ( [id] => Hewlett-Packard)

然后结束

Array ( [id] => Apple )

什么是跟踪页面上点击的链接?每次点击新链接时都需要重置它吗?

编辑:回应“你试过什么?”

$("#modal-body").empty();在那里添加了,希望它可能是我需要清除的模态体。不是这样。然后我想也许 GET 变量需要在关闭模式时重置,所以我添加了<?php unset($_GET); ?>;. 但是 print_r($_GET) 显示该数组仅包含一个数组元素,而不是之前单击的所有链接。所以我不知道点击链接的历史记录在哪里存储。

4

1 回答 1

1

所以基本上,每次你点击一个divBox链接时,它都会为myModal'show'事件添加一个新的处理程序。所以基本上在点击 5 个不同的divBox链接后,myModal's show 事件将循环通过 5 个不同的处理函数。

基本上,您需要在添加新的之前删除先前添加的“显示”处理程序。

$('#myModal').off('show');

在 jQuery 中删除事件处理程序的最佳方法?

于 2012-08-10T20:49:23.047 回答