- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 jQuery 中创建了一个“2d slider ”,其中通过拖动边界框中的“ handle ”来同时操作 2 个参数。
我通过在父 div 中嵌套一个“handle”div 并使用 jQuery UI 插件来促进拖动行为来实现这一点。 html 看起来像:
<div class="Slider2d" id="grid_spacing_both">
<div class="Slider2dHandle" id="grid_spacing_both_handle"></div>
</div>
jQuery 看起来像:
$(".Slider2dHandle").draggable({
containment: "parent",
scroll: false,
drag: function(event, ui) {
// calculates position and updates value input boxes
}
});
我还创建了一些代码,将句柄重新定位到父 div 内任何点击的位置:
$(".Slider2d").mousedown(function(event){
// get location of click and reposition handle to click location
});
我想要做的是修改上述方法,以便用户可以单击父 div 中的某个位置,将 handle 重新定位到单击位置,然后开始拖动 handle 而不松开鼠标按钮。基本上,我需要找出一种以编程方式触发拖动功能的方法。
我找到了一些建议here和 here ,并尝试通过更改上述方法来实现他们的建议,如下所示:
$(".Slider2d").mousedown(function(event){
// get location of click and reposition handle to click location
handle = $(".Slider2d").children(".Slider2dHandle");
handle.trigger(event);
});
这在最技术的意义上是有效的,但它非常慢,并且我从 Safari 收到一堆错误消息,告诉我“RangeError:超出了最大调用堆栈大小”。我认为正在发生的事情是,当我触发句柄上的事件时,它会冒泡到父级,然后父级再次调用触发器,依此类推。我尝试通过在 .trigger() 调用之前和之后将 event.stopPropagation 扔到我的代码中来停止冒泡,但无济于事。
因此,如果有人对如何实现此功能有任何建议,我将非常感激。我有一个备用计划 here ,但在我看来,这似乎不必要地复杂。
谢谢!
最佳答案
我设法让它工作。正如我怀疑的那样,这与事件处理有关。
修复很简单:我修改了上面的代码来检查事件目标是否与回调绑定(bind)到的元素(即 slider 边界框)相同。在重新定位 handle 的初始单击中,这些是相同的元素。但是,当触发 handle 的 mousedown 事件并且该事件向上冒泡到边界框时,该事件的目标是 slider handle 。因此,它们不匹配,并且不会再次调用触发事件,从而引发无限循环。
至少我认为这就是正在发生的事情。无论如何,这是有效的代码:
$(".Slider2d").mousedown(function(event){
// get location of click and reposition handle to click location
handle = $(".Slider2d").children(".Slider2dHandle");
if ($(this).attr("id") == $(event.target).attr("id")) {
handle.trigger(event);
}
});
关于jquery - 如何以编程方式触发可拖动行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252213/
我想创建一个基于 jQuery 的非常简单的 html 编辑器(不是所见即所得)。 我的问题是如何制作 textarea或 div可能 在上面写一些文字 然后样式即标签(例如 some stuff 将
根据文档 isset 条款“测试此项目中是否已设置给定属性”。我不明白设置属性时 isset 返回 true 还是 false 在下面的代码片段中,当 env.JAVA_HOME 未设置时,java.
我正在尝试取消映射 o这是执行 :only 的默认命令( :help :only ),所以我尝试的第一件事是: nmap o 这种作品,除非我按 ,等待超过timeoutlen ms 然后按 o
我有以下型号: class MetaData(models.Model): created_at = models.DateTimeField(auto_now_add=True, auto_
下面列出了两行代码。两者对日期和时间的期望相同,但只有一个有效。我正在使用 R 3.1。 以下不起作用: DateTime2=strftime("08/13/2010 05:26:24.350", f
我有一个关于 C 代码的问题。 #include void foo(void){ int a; printf("%d\n",a); } void bar(void){
如果文件大小 > 8k,为什么读取的最后一个字节 = 0? private static final int GAP_SIZE = 8 * 1024; public static void main(
我有一个命令 Get-Testdata从不同来源检索测试数据并将这些数据存储到 PSObject以不同的值作为属性。然后将对象总数存储为数组,以便于操作、排序、计算等。 我的问题是我希望能够将这些数据
我正在使用 epoll 将大消息写入使用 HTTP 协议(protocol)的服务器。 fds 都设置为非阻塞,我正在使用边缘触发事件。我知道对于 EPOLLIN,我需要循环读取 fd,直到返回 EA
这对我来说听起来很奇怪: $test_1 = 'string'; $test_2 = '0'; var_dump(intval($test_1)); // Output: int 0 var_dump
这个问题在这里已经有了答案: Java: Integer equals vs. == (7 个回答) 7年前关闭。 请您解释以下行为。 public class EqAndRef { publ
Drupal 的行为到底是什么? 它为模块开发人员提供什么类型的服务层? 它映射到 jQuery.ready 的关系类型是什么? 最佳答案 长版:Drupal.behaviors 不仅仅是 jQuer
以下代码: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ for (int i=0
人们可以将项目添加到数据库中。我让他们选择在此时添加它,或手动选择日期。 因此我得到了这个 HTML 结构。 (请注意,我将日期和时间选择器妥协为只有一行文本) Selec
创建了一个数据框: simpleDF is.na(simpleDF$vals) [1] TRUE TRUE FALSE > is.nan(simpleDF$vals) [1] FALSE TRU
我有一个大的 docker 镜像 A,我创建了一个新的 Dockerfile FROM A RUN rm /big-folder 我尝试使用以下方法构建图像: docker build --squas
我想知道以下情况下 JVM 的行为是什么: JVM 最小堆大小 = 500MB JVM 最大堆大小 = 2GB 操作系统有 1GB 内存 JVM启动后,程序运行一段时间后,使用内存超过1GB。我想知道
我们正在使用 spikeearrest 策略,但我们不了解其工作原理。峰值逮捕配置如下: 5pm 阅读文档,我们了解到,如果我们在一分钟内调用此流超过 5 次,则该策略将在第 5 次之后
我正在使用 cURL 发送 POST 请求: curl http://tarvos.local:8080/partial_Users/2 -d '{currentPage : 1, firstID :
我的表中有 6442670 条记录,我正在使用以下命令获取它们jdbctemplate 使用行号一次 1000000 个。以下是查询 select * from (select rowNum rn
我是一名优秀的程序员,十分优秀!