- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要以下代码中 CSS 的进一步帮助 - 这是这篇文章的延续:
jQuery: Counter for draggables (again!)
因此,下面的代码旨在计算 table 布上盘子的数量,如果您将一个盘子从 table 布上移开,则计数器会下降。
该代码或多或少有效,但是,当您单击一个盘子将其拖动时,该盘子会跳到不同的位置。当您将盘子放在 table 布上时也会发生同样的情况:它不是落在您希望它落在的地方,而是落在其他地方……非常烦人。谁能就如何解决问题提出建议?
$(init);
function init() {
var j = 0;
$("#counter").find("h1").html("You keep: " + j);
$(".fish").draggable({
addClasses: true,
refreshPositions: true,
//When you start dragging you append to body mainly to remove
// from cloth div
start: function(e, ui) {
ui.helper.appendTo('body');
},
//You move your out logic to stop. So if the element hasn't been added
// to cloth, it won't be counter
stop: function(e, ui) {
j = $(".cloth .fish").length;
j = j + 0;
$("#counter").find("h1").html("You keep: " + j);
}
});
$(".cloth").droppable({
accept: ".fish",
tolerance: "fit",
drop: function(event, ui) {
//On drop you append fish to the cloth div so it's counted
$('.cloth').append(ui.helper.css({
position: 'absolute',
top: ui.helper.offset().top,
left: ui.helper.offset().left
}));
j = $(".cloth .fish").length;
j = j + 0;
$("#counter").find("h1").html("You keep: " + j);
},
});
}
.mybox {
width: 90%;
height: 10px;
position: absolute;
bottom: 10%;
margin-left: 5%;
text-align: center;
maring: auto;
background-color: orange;
}
#stop-top {
position: relative;
background-color: orange;
}
.fish {
margin: .5em;
font-size: 1.2em;
position: relative;
display: inline-block;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-radius: 50%;
width: 50px;
height: 50px;
background: #BAB6B2;
float: left;
border: .3em solid #4B027C;
}
.cloth {
width: 90%;
height: 210px;
border-radius: 15px;
border: 5% solid rgba(200, 0, 0, .5);
margin: 0 auto;
background-color: white;
background-image: linear-gradient(90deg, rgba(200, 0, 0, .5) 50%, transparent 50%), linear-gradient(rgba(200, 0, 0, .5) 50%, transparent 50%);
background-size: 20px 20px;
}
.ui-draggable-dragging {
position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<div class='mybox' style='top:5%;height:70%;'>
<div id="counter" style="margin-left:5%;">
<h1>You keep: 0</h1>
</div>
<div class="cloth"></div>
<div class="fish" style="margin-left: 5%;"></div>
<div class="fish"></div>
<div class="fish"></div>
<div class="fish"></div>
<div class="fish"></div>
<div class="fish"></div>
</div>
<div class='mybox' style='height:20%; background-color:blue;'>
<button type="button" class="btn btn-primary " name="buttonSend">
<span class="glyphicon glyphicon-ok"></span> Ok
</button>
</div>
感谢您的帮助!最好的,
最佳答案
因此,我找到了一种使用原生 HTML5 功能并放弃 jQuery 来解决该问题的方法。该解决方案虽然不完美,但解决了将元素拖放到窗口“错误”区域时“跳跃”元素的问题。
总结一下:使用HTML5原生特性让相关元素可以拖放。然后使用 document.getElementById("yourDivId").childNodes.length计算可转换区域中的 child 数量。这是在以下代码段中完成的。
//global variable: number of tokens.
var j = 0;
function doFirst(){
//Set intial variables by ref. to objects in the page.
token1 = document.getElementById('token1');
token2 = document.getElementById('token2');
token3 = document.getElementById('token3');
token4 = document.getElementById('token4');
token5 = document.getElementById('token5');
token6 = document.getElementById('token6');
//as soon as you start to drag token, fire the user's startdrag.
token1.addEventListener("dragstart", startDrag, false);
token2.addEventListener("dragstart", startDrag, false);
token3.addEventListener("dragstart", startDrag, false);
token4.addEventListener("dragstart", startDrag, false);
token5.addEventListener("dragstart", startDrag, false);
token6.addEventListener("dragstart", startDrag, false);
//Reference tablecloth too.
tablecloth = document.getElementById('tablecloth');
// Here you need thre listeners
// 1. when something enters table cloth do this...
// this bit function(e){e.preventDefault();} overrides different browsers' default
// action.
tablecloth.addEventListener("dragenter",function(e){e.preventDefault();},false);
tablecloth.addEventListener("dragover",function(e){e.preventDefault();},false);
tablecloth.addEventListener("dragleave",leavecloth,false);
tablecloth.addEventListener("drop",dropped,false);
contador = document.getElementById('contador');
junk = document.getElementById('junk');
middleground.addEventListener("dragenter",function(e){e.preventDefault();},false);
middleground.addEventListener("dragover",function(e){e.preventDefault();},false);
middleground.addEventListener("dragleave",leavestart,false);
middleground.addEventListener("drop",droppedout,false);
}
function startDrag(e){
// stands for an event (something) than happens in your browser.
// whenever an event occurs the browser stores information about events,
// e.g. event of moving mouse -stores x-y position. We will have to stores
// infor with our drop/drag event.
e.dataTransfer.setData('Text', e.target.id);
}
function dropped(e){
e.preventDefault();
var data = e.dataTransfer.getData('Text');
e.target.appendChild(document.getElementById(data));
j = document.getElementById("tablecloth").childNodes.length;
contador.innerHTML = j;
}
function droppedout(e){
e.preventDefault();
var data = e.dataTransfer.getData('Text');
e.target.appendChild(document.getElementById(data));
j = document.getElementById("tablecloth").childNodes.length;
contador.innerHTML = j;
}
function leavecloth(e){
leftcloth = 1;
junk.innerHTML = 'left cloth' + leftstart+leftcloth;
}
function leavestart(e){
leftstart = 1;
junk.innerHTML = 'left start' + leftstart+leftcloth;
}
window.addEventListener("load", doFirst, false); //As soon page loads do this
.mybox{
background-color: SkyBlue;
width: 100%;
height: 40%;
position: absolute;
bottom: 20%;
}
.myfooter{
background-color: Yellow;
width: 100%;
height: 20%;
position: absolute;
bottom: 0%;
}
.tablecloth {
width: 50%;
height:40%;
left: 25%;
position: absolute;
border-radius: 28px;
background-color:white;
background-image: linear-gradient(90deg, rgba(200,0,0,.5) 50%, transparent 50%),
linear-gradient(rgba(200,0,0,.5) 50%, transparent 50%);
background-size:20px 20px;
}
.fish {
margin:.5em;
font-size:1.2em;
position:relative;
display:inline-block;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
border-radius: 50%;
width: 50px;
height: 50px;
background: #BAB6B2;
float: left;
border:.3em solid #4B027C ;
}
<!DOCTYPE html>
<html lang= "en">
<head>
<link rel = "stylesheet" href = "estilos.css">
<script src = "acciones.js"></script>
<head>
<body>
<div class = 'tablecloth' id = 'tablecloth'></div>
<div class = "mybox" id ='middleground'>
<div class = "fish" id = "token1" draggable="true"></div>
<div class = "fish" id = "token2" draggable="true"></div>
<div class = "fish" id = "token3" draggable="true"></div>
<div class = "fish" id = "token4" draggable="true"></div>
<div class = "fish" id = "token5" draggable="true"></div>
<div class = "fish" id = "token6" draggable="true"></div>
</div>
<div class = "myfooter">
<h1>
<div id = "contador">0</div><br>
</h1>
<h1>
<div id = "junk">nothingmuchs.</div><br>
</h1>
</div>
</body>
</html>
关于javascript - draggables 的 jquery 计数器(甚至更多!!!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36461021/
更新: See latest updates at the bottom. 原装 我有 flutter Draggable 和 DragTarget 小部件,它们正在工作,但在放置 DragTarge
我有下面的板。有一个覆盖( Stack )的 2 x 10 小部件,一些透明的小部件是 DragTargets在它们之上,相同的宽度和高度有 Draggable . Draggable那些是包含图像的
当前输出 预期输出 正如我们在第一张图片中看到的,可拖动的 ul li 位于可放置区域的右侧。 当我从数据库中获取内容时,我将在可拖动的 ul 中拥有 n 个元素。 但是当我尝试将 height :
对 jquery 有点陌生,我正在使用可拖动和可放置的东西。我有两个可拖动对象和一个可放置对象。我不太清楚如何让它根据我放置的盒子做不同的事情。这是我的 jquery: $(funct
我在拖动列表中有一个项目池,它使用 connectToSortable 选项连接到一个可排序对象。现在我想从这个排序列表中删除一些项目并将它们移回拖动列表。有点像撤消。假设用户将大约 5 个项目移动到
当使用 jQuery UI draggable+sortable 时,draggable 元素在放入 sortable 时会丢失它的 css。这是我的代码,这是一个 js fiddle demo 尝试
我正在使用 jQuery 构建一个座位应用程序。我的 table 周围有椅子,可能有客人坐在椅子上。每个表格都有一个可拖动的包装 div。 table 里面有任意数量的椅子分区。客人可以在任何椅子座位
这是我从 http://jqueryui.com/demos/draggable/ 中获取的代码 jQuery UI Draggable - Default functionalit
我在使用 Vue.js 和 VueDraggable 库时遇到问题 ( https://github.com/SortableJS/Vue.Draggable )这是一个代码示例:
我使用 jQuery UI 制作了一个可拖动对象,并将帮助器选项设置为“克隆”。如果我开始拖动元素,则会创建克隆,并且它会按预期工作,此外,初始元素中应用的类不会传递给克隆。如果我改为使用辅助选项的函
根据 jQuery UI 文档,将 addClasses 选项设置为 false“将阻止将 ui-draggable 类添加到”可拖动元素: http://api.jqueryui.com/dragg
使用 jQuery Draggable 如何限制可拖动对象被拖动 仅在一个方向 ? 即当 axis: 'y' 时只有顶部或只有底部 并且只有在 axis: 'x' 时才向左或仅向右 这意味着如果我想要
我试图包含我的可拖动元素,这样它就不能被拖动到可查看窗口之外,如果用户位于页面顶部,这种方法效果很好,但是如果你向下滚动,那么它就会把一切搞乱. 我该怎么做? $(".chat-wrapper > l
我有几个draggable & droppable我页面上的元素,它们具有 accept 属性。 目前我的代码设置如下: $(".answer." + answer).draggable({
我正在做一个小项目,并且使用 jquery 的 draggable 有一个有趣的遏制问题。 : 基本上,我有两个 div - 顶部和底部。然后,我有第三个 div,它是 .draggable({}),
如何防止用户将元素拖到窗口之外? elm.css({ top : $(window).scrollTop() + ($(window).height() - elm.height())
我有一个问题需要你帮我解决。我有两个这样的列表。 itemA itemB Add Item itemC Add Item 这里的问题是当我将 itemC 拖动到
我有一个 jQuery Draggable() 函数,并且在拖动时基于 if 执行几个其他函数。像这样的事情: $("div.element").draggable({ drag: funct
我有一个可拖动的 div。现在,我希望该 div 粘在浏览器窗口的边框上。这可能吗?或者也许有一些扩展插件可以实现这一点? 最佳答案 由于我无法模仿 jsfiddle 框架中的 window,因此我将
背景 我正在构建一个 meteor 应用程序,在其中保存相应 div 的对象位置和大小。当再次访问此页面时,我重新创建所有 div 并适本地重新填充对象大小和位置。我正在重新填充 div 和相应的对象
我是一名优秀的程序员,十分优秀!