jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 仍然触发2个不同项目的双击事件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_419_4@
我试图使一个项目从1列表移动到双击时的第二个列表.然后单击它时,将其移回第一个列表.

我遇到的问题是,当快速单击第二个列表中的项目时,双击事件将触发,尽管没有单击相同的项目.

你可以在这个jsfiddle中看到问题

https://jsfiddle.net/9afn4s7q/

$('.item').dblclick(function () {
  $(this).detach();
  $('#list2').append($(this));
  $(this).click(function () {
    $(this).detach();
    $('#list1').append($(this));
  });
});

如何在单击不同项目时停止触发双击事件?

@H_419_4@

解决方法

您会看到此行为,因为在附加元素后仍会触发dbclick事件.

换句话说,当单击第二个列表中的项目时,第二个单击事件将与dbclick事件几乎同时触发.要解决此问题,您可以比较事件时间戳,以确定第二次单击事件是否在附加后触发了dbclick事件.

在下面的示例中,每次触发click事件时都会更新lastClicktimestamp变量.为了防止您看到的奇怪行为,将检查是否在触发dbclick事件之前触发了最后一次单击.

Updated Example

var lastClicktimestamp = 0;
$('#list1').on('dblclick','.item',function(event) {
  if (event.timestamp > lastClicktimestamp) {
    $('#list2').append(this);
  }
});
$('#list2').on('click',function(event) {
  lastClicktimestamp = event.timestamp + 100;
  $('#list1').append(this);
});

附注:

>我@L_874_11@了100毫秒来虑潜在的时间戳近似值.事件时间戳可能只变化1毫秒.
>我使用事件委托以避免嵌套事件侦听器(尽管您已经意识到这一点).
>由于您使用的是jQuery 1.6.4版,因此您将使用.delegate()方法而不是.on()方法.

正如我在评论中指出的那样,您也可以延迟将元素附加到第一个列表.这样做时,不会触发委派的dbclick事件.

Updated Example

$('#list1').on('dblclick',function(event) {
  $('#list2').append(this);
});
$('#list2').on('click',function(event) {
  setTimeout(function () {
    $('#list1').append(this);
  }.bind(this),5);
});

我觉得这两种解决方案都相对苛刻,但它们似乎都有效.

@H_419_4@ @H_419_4@
@H_419_4@
@H_419_4@
本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

猜你在找的jQuery相关文章

由于是触摸屏,所以需要一款JS虚拟键盘。上网找了一个好用的VirtualKeyboard,作了修改。 修改该插件参的博客文章:http://www.cnblogs.com/xinggong/arch
@L_674_29@
HashMap代码(这种实现方式是错误的,错误原因:代码中_map、_length变量是HashMap的所有实例共用的): /** * HashMap * 2021年09月09日 */ (functi
一、引用CSS和JS:View Code二、HTML:View Code三、JS:$(function () { var @R_945_10586@l = parseInt("@(ViewBag.@R_945_10586@l)
JS数字键盘,JS小键盘CSS代码:#numberkeyboard{ border: 1px solid #b3b3b3; BACkground: #f2f3f7; height: 285px; ma
C.js代码: /** * 有BUG */ (function (global) { var _id; var _map; var _length; global.C = function () {
一、节点模糊搜索功能:搜索成功后,自动高亮显示并定位、展开搜索到的节点。二、节点异步加载:1、点击展开时加载数据;2、选中节点时加载数据。前台代码如下:View Code View Code后台代码(
需求:页面显示教师信息列表,列表中每一条数据显示图片滚动插件,每张图片的长宽及长宽比例各不相同。 前提条件:美工把静态页面写好 HTML代码: @using Models; @{ List<cm
示例代码: marker.addEventListener("click", function(){ if (!window.markerClicked) { window.mar

大佬总结

以上是大佬教程为你收集整理的jquery – 仍然触发2个不同项目的双击事件全部内容,希望文章能够帮你解决jquery – 仍然触发2个不同项目的双击事件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。