【问题标题】:JQuery Can't Detect Result of PHP EchoJQuery 无法检测到 PHP Echo 的结果
【发布时间】:2017-09-17 07:48:42
【问题描述】:

在使用 JQuery 和 PHP 时,我遇到了以下问题:

有一个带有“Drag”类的 DIV,我使用了两次,一次是在 HTML 中硬编码,如下所示:

<div class='Drag'></div>

随后,PHP 在同一页面内生成此 DIV,如下:

echo "<div class='Drag'></div>";

PHP 代码由于 AJAX 调用而执行,所以这可能是问题的根源?

因此,页面包含这两个 DIV。另外,还有jQuery代码,如下:

$(".Drag").draggable();

但是,jQuery 代码仅适用于以 HTML 编码的 DIV,而不适用于由 PHP 生成的 DIV。为什么?

【问题讨论】:

  • javascript 是否在第二个 div 之前?
  • 将您的代码发布到您使用 php 生成 div 的位置。
  • 请分享您的代码,技术上他应该没有问题
  • 实际上可能是你所说的,因为代码是在调用 PHP 脚本的 AJAX 调用之后出现的。

标签: javascript php jquery


【解决方案1】:

需要在ajax请求完成后再次运行$(".Drag").draggable()

当您第一次调用 $(".Drag").draggable() 时,页面上唯一的 div 是在 html 中创建的。

【讨论】:

  • 其实就是这样!但是有没有办法只调用一次 $(".Drag").draggable() 然后它被用于所有事情?
  • @Weyooo 不熟悉可拖动库,但很可能不熟悉。一种解决方案(可能并不理想)是创建一个额外的隐藏 .drag div,然后在 ajax 中创建一个 .drag ,而不是在现有的隐藏 .drag 中创建一个 .drag 并隐藏它。但这不仅仅是在 ajax 之后调用 .draggable() 工作。
【解决方案2】:

要么在 DOM 完成加载之前运行 javascript,因此在第二个 div 处于上下文之前,要么 jQuery 库未设置为迭代选择器。

可能解决您的问题的代码

$(document).ready(function() {
  $('.Drag').each(function() {
     $(this).draggable();
  });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2023-03-21
    • 2012-11-16
    相关资源
    最近更新 更多