- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想先说说我想做的事情。我目前正在研究菜单生成器(我不知道如何准确命名它),类似于在 WordPress 中放置小部件但用于在网站上创建菜单。我尝试使用 jQuery 和 Sortable 来实现(我也尝试过 Draggable 和 LiveQuery 但这不是我想要的)但是我遇到了一些问题:
代码如下:
JavaScript:
$(function(){
$('.dragbox').each(function(){
$(this).find('.dragbox-content').css('display', 'none');
});
$('.dragbox')
.each(function(){
$(this).hover(function(){
$(this).find('h2').addClass('collapse');
}, function(){
$(this).find('h2').removeClass('collapse');
})
.find('h2').hover(function(){
$(this).find('.configure').css('visibility', 'visible');
}, function(){
$(this).find('.configure').css('visibility', 'hidden');
})
.click(function(){
$(this).siblings('.dragbox-content').toggle();
})
.end()
.find('.configure').css('visibility', 'hidden');
});
$('.column').sortable({
connectWith: '.column',
handle: 'h2',
cursor: 'move',
placeholder: 'placeholder',
forcePlaceholderSize: true,
opacity: 0.4,
stop: function(event, ui){
if (ui.target == event.target) alert("Error!");
$(ui.item).find('h2').click();
$(ui.item).clone().appendTo(event.target);
$(event.target).each(function(){
$(this).find('.dragbox-content').css('display', 'none');
});
},
remove: function(event, ui) {
if (ui.target == event.target) alert("Error!");
}
});
});
和 HTML:
<h3>Drag n Drop - menu test</h3>
<div class="column" id="column1">
<div class="dragbox" id="item1" >
<h2>category</h2>
<div class="dragbox-content" >
Name: <input type="text"/>
</div>
</div>
<div class="dragbox" id="item2" >
<h2>button</h2>
<div class="dragbox-content" >
Text: <input type="text"/><br />
Link: <input type="text"/>
</div>
</div>
<div class="dragbox" id="item3" >
<h2>html code</h2>
<div class="dragbox-content" >
<textarea></textarea>
</div>
</div>
</div>
<div class="column" style="width: 49%;" id="column2" >
</div>
我知道它可能看起来很困惑,所以有一个例子可以说明我的意思: http://hun7er.pl/poligon/dragndrop/代码基于该教程:http://webdeveloperplus.com/jquery/collpasible-drag-drop-panels/
正如您可能看到的那样,只能隐藏/取消隐藏目标项目的内容,有时在尝试隐藏/取消隐藏项目时可能会意外克隆。我在这里、stackoverflow 和其他一些地方(谷歌搜索)搜索了一个解决方案,但几乎所有解决方案都涉及 Draggable 或 LiveQuery,我不知道如何在那里使用占位符(正如我提到的,我找不到任何带有可拖动和占位符的教程/线程/帖子)。
我考虑过使用正则表达式来更改项目 ID(它对所有克隆的项目都保持不变)但是不知道如何获取项目 ID 并使用 Firebug 更改它似乎没有帮助。对不起,如果有类似的线程,但我找不到任何(我现在能看到的唯一一个没有解决方案)。
在此先感谢您的帮助
最佳答案
为了回答我认为最紧迫的问题,这里有一个使用 placeholder 排序的 jQueryUI 示例。 .
但是,我认为您可能想要的实际上是 helper属性,用于定义拖动时要显示的元素。
关于您的明确问题(我在前面加上了一个分类器来帮助识别我认为是问题的地方)......
Event Binding Problems: the user should be given the possibility of hiding the content of the item but the button hiding/unhiding it blocks after copying the item.
要解决此问题,您需要使用事件委托(delegate),出于性能原因,最好将事件委托(delegate)限定在您的列中。 jQuery 有一个 .delegate允许您实现此目的的方法。下面是一些基于您的标记的示例代码:
$('.column').delegate('.dragbox h2', 'hover', function() {
$(this).toggleClass('collapse');
});
$('.column').delegate('.dragbox', 'click', function() {
$(this).find('.dragbox-content').toggle();
});
根据 .delegate 上的 jQuery 文档中的描述,这允许您在生成元素时不必担心重新绑定(bind)事件:“将处理程序附加到所有元素的一个或多个事件根据一组特定的根元素匹配选择器,现在或将来。”
Cloning : the source item should be cloned and not moved (but using a placeholder - I couldn't find draggable with a placeholder) without being removed from list (I have a temporary solution with adding the source item on the end of list but that isn't what I want to achieve)
为了正确克隆该项目,我可能建议更改您的界面范例,以便您有一个按钮来指示用户调用“单击以添加”或类似的操作。最好有一个驱动添加的按钮而不是担心拖放。您仍然可以在 column2 中执行 .sortable,但使用按钮会简化添加交互。
Drop Restrictions : the item has to be moved from one column to another (i.e. from #column1 to #column2, not #column1 -> #column1 [same with #column2] and not #column2 -> #column1)
如果您使用按钮范例进行添加,那么您就可以避免担心这些限制。另外,看看 receive function因为如果您不想使用按钮范式,它可能会提供更多限制和恢复的能力。
关于javascript - jQuery sortable拖放-克隆等问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330295/
我有一个 html 格式的表单: 我需要得到 JavaScript在value input 字段执行,但只能通过表单的 submit .原因是页面是一个模板所以我不控制它(不能有
我管理的论坛是托管软件,因此我无法访问源代码,我只能向页面添加 JavaScript 来实现我需要完成的任务。 我正在尝试用超链接替换所有页面上某些文本关键字的第一个实例。我还根据国家/地区代码对这些
我正在使用 JS 打开新页面并将 HTML 代码写入其中,但是当我尝试使用 document.write() 在新页面中编写 JS 时功能不起作用。显然,一旦看到 ,主 JS 就会关闭。用于即将打开的
提问不是为了解决问题,提问是为了更好地理解系统 专家!我知道每当你将 javascript 代码输入 javascript 引擎时,它会立即由 javascript 引擎执行。由于没有看过Engi
我在一个文件夹中有两个 javascript 文件。我想将一个变量的 javascript 文件传递到另一个。我应该使用什么程序? 最佳答案 window.postMessage用于跨文档消息。使
我有一个练习,我需要输入两个输入并检查它们是否都等于一个。 如果是 console.log 正则 console.log false 我试过这样的事情: function isPositive(fir
我正在做一个Web应用程序,计划允许其他网站(客户端)在其页面上嵌入以下javascript: 我的网络应用程序位于 http://example.org 。 我不能假设客户端网站的页面有 JQue
目前我正在使用三个外部 JS 文件。 我喜欢将所有三个 JS 文件合而为一。 尽一切可能。我创建 aio.js 并在 aio.js 中 src="https://code.jquery.com/
我有例如像这样的数组: var myArray = []; var item1 = { start: '08:00', end: '09:30' } var item2 = {
所以我正在制作一个 Chrome 扩展,它使用我制作的一些 TamperMonkey 脚本。我想要一个“主”javascript 文件,您可以在其中包含并执行其他脚本。我很擅长使用以下行将其他 jav
我有 A、B html 和 A、B javascript 文件。 并且,如何将 A JavaScript 中使用的全局变量直接移动到 B JavaScript 中? 示例 JavaScript) va
我需要将以下整个代码放入名为 activate.js 的 JavaScript 中。你能告诉我怎么做吗? var int = new int({ seconds: 30, mark
我已经为我的 .net Web 应用程序创建了母版页 EXAMPLE1.Master。他们的 I 将值存储在 JavaScript 变量中。我想在另一个 JS 文件中检索该变量。 示例1.大师:-
是否有任何库可以用来转换这样的代码: function () { var a = 1; } 像这样的代码: function () { var a = 1; } 在我的浏览器中。因为我在 Gi
我收到语法缺失 ) 错误 $(document).ready(function changeText() { var p = document.getElementById('bidp
我正在制作进度条。它有一个标签。我想调整某个脚本完成的标签。在找到可能的解决方案的一些答案后,我想出了以下脚本。第一个启动并按预期工作。然而,第二个却没有。它出什么问题了?代码如下: HTML:
这里有一个很简单的问题,我简单的头脑无法回答:为什么我在外部库中加载时,下面的匿名和onload函数没有运行?我错过了一些非常非常基本的东西。 Library.js 只有一行:console.log(
我知道 javascript 是一种客户端语言,但如果实际代码中嵌入的 javascript 代码以某种方式与在控制台上运行的代码不同,我会尝试找到答案。让我用一个例子来解释它: 我想创建一个像 Mi
我如何将这个内联 javascript 更改为 Unobtrusive JavaScript? 谢谢! 感谢您的回答,但它不起作用。我的代码是: PHP js文件 document.getElem
我正在寻找将简单的 JavaScript 对象“转储”到动态生成的 JavaScript 源代码中的最优雅的方法。 目的:假设我们有 node.js 服务器生成 HTML。我们在服务器端有一个对象x。
我是一名优秀的程序员,十分优秀!