如何查看是不是两次单击相同的元素? jQuery

Posted

技术标签:

【中文标题】如何查看是不是两次单击相同的元素? jQuery【英文标题】:How to see if you're clicking the same element twice? Jquery如何查看是否两次单击相同的元素? jQuery 【发布时间】:2011-10-05 00:54:29 【问题描述】:

如何检测用户是否点击了同一个 div?

我试过这个没有成功:

    _oldthis = null;

    var _this = $(this);

    if(_oldthis == _this) 
        alert('You clicked this last');
    

    _oldthis = _this;

【问题讨论】:

你声明了_oldthis 我认为您需要提供更多上下文... oyu 是否需要存储点击历史并在某处进行比较?如果是这样,出于什么原因?此外,如果您可以 psot 完整的点击处理程序而不是 jsut 其代码的摘录,这将是有用的:-) 【参考方案1】:

您无法比较 jQuery 对象,但您可以比较它们包含的 DOM 对象。试试这个:

var previousTarget=null;
$("a").click(function() 
    if(this===previousTarget) 
        alert("You've clicked this element twice.");
    
    previousTarget=this;
    return false;
);

【讨论】:

注意使用“this”而不是“$(this)”很重要 @TaylorMac return false 有什么作用? @user2763557:这里我假设链接类似于<a href="#">...</a>,浏览器的默认操作是转到#(经常跳到页面顶部) ,我想象在这种情况下是不可取的。 return false 阻止默认浏览器行为。如果默认行为很好并且您不想阻止它,则不需要return false【参考方案2】:

你可以试试这个,

var _oldthis = null;
$('div').click(function()
  var _this = $(this);

  if(_this == _oldthis) 
    alert('You clicked this last');
    _oldthis = null;
    return false;
  
  _oldthis = _this;

);

【讨论】:

【参考方案3】:
var clickHandler;
$('a').click(function()
    if(clickHandler) 
        clickHandler = alert('click twice');
     else 
        clickHandler = alert('click once');
    
);

【讨论】:

以上是关于如何查看是不是两次单击相同的元素? jQuery的主要内容,如果未能解决你的问题,请参考以下文章

jquery双击事件(dblclick)时,不触发单击事件(click)

java - 如何在java脚本或jquery中计算相同按钮单击3次和4次时的间隔时间

如何使用jQuery检查选择/单击的元素是不是是“n”的倍数?

如何使用 jQuery 复制表单元素和其中的数据?

JQuery 检查类是不是匹配

如何用JavaScript更改元素的类?