【问题标题】: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 其代码的摘录,这将是有用的:-)

标签: jquery jquery-selectors this


【解决方案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');
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 2012-05-17
      相关资源
      最近更新 更多