ai didi

javascript - 可拖动不起作用?

转载 作者:行者123 更新时间:2023-11-30 06:38:19 24 4
gpt4 key购买 nike

大家好,我有一个功能,我必须在这里拖放元素,这是我的代码:

$(document).ready(function() {

var i = 0;
$("button[id='columnadd']").click(function () {
alert(1);
var domElement = $('<aside id="shoppingCart' + i + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');
i++;
$(this).after(domElement);
});

$(".small_box li" ).draggable({
appendTo: "body",
helper: "clone"
});
});

$('#shoppingCart ol').droppable({
accept: '.small_box li',
drop: function (event, ui) {
alert(1);
$(this).find(".placeholder").remove();
$("<li></li>").text(ui.draggable.text()).appendTo(this);
}
});

这是我的 html:

    <aside class="small_box">
<h4>BRANDS</h4>
<ul>
<li id ="brand1"><a class="" href="#">Brand1</a></li>
<li id ="brand2"><a href="#">Brand2</a></li>
<li id ="brand3"><a href="#">Brand3</a></li>
<li id ="brand4"><a href="#">Brand4</a></li>
</ul>
</aside>

我应该可以顺便去这个地方<li class="placeholder">Add your items here</li>

var domElement = $('<aside id="shoppingCart' + i + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');

非常感谢任何帮助

最佳答案

首先,请修复您的代码缩进。

你的代码有一些错误:

  1. var i = 0;我认为它应该是一个全局变量。所以把它放在你的 $(document).ready(function() {}) block 之外;

  2. 您在点击时创建了一个 DOM 元素(即拖放区域),该元素在您点击触发器之前不会出现在您的页面中。通过在 $(document).ready(function() {}) block 中执行 $('#shoppingCart ol').droppable({...}) 尝试将 droppable 添加到甚至不在您的页面中的元素,所以这不会做任何事情。

您应该做的是使该元素可放置您创建该元素并将其放在您的页面上。这是一个例子:

$("button[id='columnadd']").click(function () {
// create the element
var domElement = $('<aside id="shoppingCart' + i++ + '" class="shoppingCart"><h2 class="ui-widget-header">Add Menu Items Here</h2><aside class="ui-widget-content" id="droppable"><ol><li class="placeholder">Add your items here</li></ol></aside></aside>');

// put it after $(this)
$(this).after(domElement);
// at this point you have domElement in your page

// make it droppable
domElement.find("ol").droppable({
// put options here
greedy: true,
drop: function (event, ui) {
makeItDroppableToo(event, ui, this);
}
});
});

这是让你放置的元素有自己的占位符的函数

function makeItDroppableToo(e, ui, obj) {
$(obj).find(".placeholder").remove();

var placeholder = $("<ol><li class='placeholder'>You can also drop it here</li></ol>");
$("<li></li>").append(ui.draggable.text()).append(placeholder).appendTo($(obj));

// this is the same as the previous one
placeholder.droppable({
// put options here
greedy: true,
drop: function (event, ui) {
makeItDroppableToo(event, ui, this);
}
});
}

关于javascript - 可拖动不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13116638/

24 4 0
文章推荐: java - Java 中的 Scanner 类是做什么用的?
文章推荐: java - Java EE 组件之间的通知
文章推荐: javascript - 如何在不使用 html 属性标记数据绑定(bind)值的情况下使用 Knockout 进行绑定(bind)?
文章推荐: javascript - 验证 ssl 证书/ key 的格式
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com