jQuery UI Droppable - 如何实际更改 HTML?

2023-12-27

使用 jQuery UI 的 Droppable 我制作了一个架子类型的东西,其中包含的项目可以移动。这是代码:http://jsfiddle.net/JoeyMorani/7LWj4/ http://jsfiddle.net/JoeyMorani/7LWj4/

是否可以实际更改架子的 HTML,因此当移动“.boxArt”div 时,它们也会在 HTML 中移动。目前它似乎只是改变了 div 的位置,并没有真正移动它。

我想这样做,这样我就可以检测到 div 在哪里。 (他们的父div是什么)

谢谢您的帮助! :)


我对演示中的 HTML 和 CSS 进行了一些更改,但我有一些工作。 HTML 更简单并且不会影响结果,但如果您需要以前的布局,我的答案可能并不完全适合您。

完整的代码复制在下面以及jsFiddle 演示 http://jsfiddle.net/TGubd/8/。分离后代码实际上变得简单了很多.boxArt并将其移动到 DOM 中,因为动画只需要更改top and left返回到 0。唯一困难的部分是计算正确的位置来设置.boxArt到制作动画之前。这是由于可拖动的相对地定位到它被拖动的元素。一旦它在 DOM 中移动,这个位置现在就完全不正确了。所以代码计算出来并将可拖动的相对位置设置为new首先(将其移动到 DOM 中之后)然后动画回到top:0,left:0.

这在 Chrome 中对我有用,但我尚未在任何其他浏览器中进行测试。console.log留下来显示发生了什么。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <style type="text/css">
      .shelfRow {
        width:1865px;
        height:280px;
      }
      #shelves {
        position:relative;
        width:950px;
        height:566px;
        background:#CCC;
        border:1px solid #333;
        overflow-y:hidden;
        overflow-x:auto;
      }
      .drop {
        width:155px;
        height:200px;
        padding:2px;
        margin-top:30px;
        margin-left:25px;
        float:left;
        position:relative;
      }
      .dropHover {
        padding:0px;
        border:2px solid #0C5F8B;
        -webkit-box-shadow: 0 0 3px 1px #0C5F8B;
        box-shadow: 0 0 3px 1px #0C5F8B;
        -moz-box-shadow: 0 0 20px #0C5F8B;
      }
      .boxArt {
        width:155px;
        height:200px;
        -webkit-box-shadow: 0 0 8px 1px #1F1F1F;
        box-shadow: 0 0 8px 1px #1F1F1F;
        -moz-box-shadow: 0 0 20px #1F1F1F;
        color:#000;
        background:#FFF;
      }
    </style>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
    <script type="text/javascript">
      $(function() {
          var shelfOffset = $('#shelves').offset();
          var dropMarginTop = parseInt($('.drop').css('marginTop'));
          var dropMarginLeft = parseInt($('.drop').css('marginLeft'));

          $('.drop').droppable({
              accept: function(el) {
                return $(this).children('.boxArt').length === 0 && el.hasClass('boxArt');
              },
              tolerance: 'intersect',
              hoverClass: 'dropHover',
              drop: function(event, ui) {
                ui.draggable.detach().appendTo($(this));

                var originalOffset = ui.draggable.data('originalOffset');
                console.log('originalOffset', originalOffset.top, originalOffset.left);

                var boxArt = $(this).children('div');
                var boxPosition = boxArt.position();
                console.log('boxArt position', boxPosition.top, boxPosition.left);

                var container = $(this);
                var containerPosition = container.position();
                console.log(container, containerPosition.top, containerPosition.left);

                var newTop = originalOffset.top + boxPosition.top - containerPosition.top - shelfOffset.top - dropMarginTop;
                var newLeft = originalOffset.left + boxPosition.left - containerPosition.left - shelfOffset.left - dropMarginLeft;

                console.log('new offset', newTop, newLeft);
                boxArt.css({top:newTop,left:newLeft}).animate({top:0,left:0});
              }
          });

          $('.boxArt').draggable({
            start: function(event, ui) {
              $(this).data('originalOffset', ui.offset);
            },
            revert: 'invalid'
          });
      });
    </script>
  </head>
  <body>
    <div id="shelves">
      <div class="shelfRow">
        <div class="drop"></div>
        <div class="drop"><div class="boxArt" id="boxArt2">2</div></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div id="drop15"></div>
      </div>
      <div class="shelfRow">
        <div class="drop"><div class="boxArt" id="boxArt1">1</div></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
        <div class="drop"></div>
      </div>
    </div>
  </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery UI Droppable - 如何实际更改 HTML? 的相关文章

  • Li向左浮动,长度动态:最后一行无边框底部

    情况如下 https jsfiddle net rpepf9xs https jsfiddle net rpepf9xs 我想用选择器 nth last child 删除边框底部 但是 如果列表中只有8个 li 则会出现如下错误 ul di
  • 在导航栏下方添加背景图片

    我想在导航栏下方添加背景图像 具有完整窗口大小的宽度 它不应覆盖整个页面长度 而是从导航栏菜单下方开始 一直向下直到特定的指定高度 但宽度是满的 我参考了以下内容 但仍然没有结果 在 Twitter Bootstrap 中的导航栏下方启动背
  • 如何仅使用CSS设置某个角的边框半径

    如上所示 我可以只给顶部部分而不给底部提供半径 或者有时给底部而不是顶部提供半径吗 有没有办法只给一个角提供边界半径 Like border radius top left top right bottom right bottom lef
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • Thymeleaf 下拉菜单中的默认值

    我正在使用 Spring MVC 和 thymeleaf 构建一个 Web 应用程序 我的下拉菜单是这样的并且它按预期工作
  • 使用 jQuery UI 日期选择器选择日历更改 URL

    我正在使用 jQuery UI 选择器 我想知道当有人选择日期时是否有可能 它会自动将他们重定向到 URL 如下所示 index php date 2013 10 15 这是我正在使用的插件 Date
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • 一个接一个地淡入div

    大家好 我很擅长 HTML 和 CSS 但才刚刚开始接触 jQuery 的皮毛 我希望让 3 个 div 在页面加载时逐渐淡入 到目前为止我有这个 我听说使用 css 将显示设置为 none 对于任何使用非 JavaScript 浏览器的人
  • 每 2 行后使 html 表格的边框变厚

    我创建了一个包含一些内容的表 其中有 12 行和 2 列 我想显示边框 但每 4 行之后 我想将水平边框设置为比正常情况更粗 怎么做 请在这里帮忙 试试这个选择器 table tr nth of type 4n td border bott
  • 自动完成仅显示消息并且结果可用,使用向上和向下箭头键进行导航。而是显示列表

    我的问题很清楚 我正在使用 jquery 自动完成 我不知道为什么它只向我显示消息 9 results are available use up and down arrow keys to navigate 没有向我显示结果列表 这是我的
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • defaultDate 选项与 setDate 方法之间的差异

    我正在尝试使用jQueryUI DatePicker 我必须了解的主要事情之一是在页面加载时设置日期的方式 经过一些研究后 我发现有两种不同的方法可以做到这一点 using defaultDate option using setDate
  • 使用 python 在一个 html 页面中显示分割数据框的 HTML 代码

    我是 html css 新手 所以对以 html 格式显示的数据有疑问 我有一个很长的列表 我想将其拆分并以 html 格式显示为两个单独的列 例如 而不是 Col1 Col2 1 a 2 a 3 a 4 a 5 b 6 b 7 b 8 b
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小

随机推荐

  • 按地址获取符号(符号二进制,iOS 构建)

    我有分配工具的快照 其中包含有趣符号的地址 我想知道这个地址在代码中的位置 我有相应的 dSYM 文件 我尝试使用atosym命令行工具 但它给了我错误的符号 与我的应用程序无关 如何获得 PS 二进制文件由XCode 4 3 2构建 代码
  • ./deploy.sh 不适用于 gitlab ci

    我的问题是我创建的 bash 脚本出现此错误 bin sh eval 第 88 行 deploy sh 未找到 在 gitlab 上 下面是我的示例脚本 gitlab ci yml 我怀疑 gitlab ci 不支持 bash 脚本 ima
  • Python 中的正则表达式用于检测整数、浮点数或科学记数法中的数字

    如何在 Python 中创建接受数字的正则表达式 这些数字可以是整数 浮点数 也可以是 3e 3 或 3e 3 格式 我只想匹配字符串的开头 如果存在上述任何格式的数字 则返回该数字和字符串的其余部分 Edit 例如 输入 gt gt 29
  • PHP、Javascript 和 SQL 代码混淆

    您好 我有这段代码可以从数据库中提取客户名称和地址 它回显下拉列表中每个条目的客户端名称
  • 无法通过 Android 应用程序正确加载 Facebook 页面

    我想通过我的 Android 应用程序单击按钮打开我的 Facebook 页面 我目前正在使用以下代码 如此处所回答 从 Android 应用程序打开 Facebook 页面 https stackoverflow com question
  • 实体框架 6.1 中的模拟 DbContext

    我发现了许多示例 显然 显示了使用 EF 6 模拟 DbContext 的清晰工作示例 但是 它们似乎都不适合我 我也不完全确定原因 这是我设置模拟的单元测试代码 var mockData new List
  • 学习 Smalltalk 最好的免费 IDE 是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您认为学习 SmallTalk 的好 IDE 是什么 我只是将它用作业余爱好 所以它必须是免费的 你还应该考虑Pharo http pha
  • Airflow Scheduler 无法通过 WSL 执行 Windows EXE

    我的 Windows 10 计算机在 WSL 2 Ubuntu 20 04 中安装了 Airflow 1 10 11 我有一个 BashOperator 任务 它在 Windows 上调用 EXE 通过 mnt c 或通过符号链接 任务失败
  • 在swift中使用bridgeToObjectiveC()

    什么是桥接目标C 会很快做的 看起来就像转换一个Swift对象进入ObjectiveC目的 这与类型转换相同吗 例如我可以转换 swiftString into NSString like var swingString String te
  • Docker swarm 未公开端口

    我正在尝试在单个节点上运行 docker swarm 但无法将 docker 应用程序端口暴露给主机 这很相似Docker swarm 服务端口未暴露 https stackoverflow com questions 54121566 d
  • 将 FontWeight 设置为 Bold 可缩小文本大小

    我一直在设置资源字典来设置 WPF 应用程序中所有控件的样式 并且在设置标签的字体粗细时发现了一些奇怪的行为 我必须为标签设置样式 第一个具有正常的字体粗细 第二个设置为粗体
  • 在 Visual Studio 2012 中创建控制器时出错

    我正在尝试学习 ASP NET MVC 因此我正在关注 asp net 网站上的音乐商店教程 我正在使用 Album cs 作为模型类和 MusicStoreEntities cs 作为数据上下文类来创建 StoreManagerContr
  • 红宝石集合/枚举的酷技巧和富有表现力的片段[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 UIDatePicker 获取数据 - Swift [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试从 UIDatePicker 获取数据 例如用户选择的日期为晚上 7 15 我如何从中获取数据 以便我可以操纵它并将其用于其
  • 如何保存类的实例列表?

    我正在用 C 编写光线跟踪器 需要能够检查场景中每个对象的交集 稍后会进行优化 为此 我需要保留类实例的运行列表 创建新实例时更新的指针列表将不起作用 因为据我所知 在初始化后无法增加数组的大小 如果有的话 我真的很想要一个内置的 C 解决
  • Shopify 应用程序可以自动在商店主题中注入液体代码吗?

    我正在构建一个 Shopify 应用程序 我有兴趣自动将液体内容添加到商店的主题中 扩展名为 liquid 的文件被视为资产 既然您可以向商店添加资产 那么答案是肯定的 您确实可以将 Liquid 模板代码注入商店的主题中 如果您使用应用程
  • 检查一个 ArrayList 的元素是否存在于其他 ArrayList 中

    我有两个数组列表 ArrayList
  • 在 ASP.NET 中访问 Excel 2013 文件

    我正在开发一个 ASP NET 应用程序 我有一个名为 ExcelApp 的 Excel 2013 文件 我也将其添加到我的项目中 我无法访问该文件 这是我的 DAL 课程 public string ExcelConnection Pro
  • 我可以使用 CloudFormation StackSets 在我自己的账户中部署到多个区域吗?

    我有一个简单的 CloudFormation 堆栈 我想将其部署到帐户中的所有区域 这样我就不必手动进入每个区域来部署堆栈 或创建一个使用 CLI 执行此操作的脚本 我尝试使用 StackSets 执行此操作 我指出我要部署到的帐户是我自己
  • jQuery UI Droppable - 如何实际更改 HTML?

    使用 jQuery UI 的 Droppable 我制作了一个架子类型的东西 其中包含的项目可以移动 这是代码 http jsfiddle net JoeyMorani 7LWj4 http jsfiddle net JoeyMorani