简单的jQuery问题 - 如何检查$(this)是否是点击的最后一个$(this)?

时间:2011-11-19 03:27:03

标签: javascript jquery

我实际上是在带有“tagbutton”类的按钮上添加了单选按钮功能。我的代码有一个缺陷,因为_this永远不会_last ...

  taguid = "";
    _last = "";
    $('.tagbutton').live('click', function() {

    _this = $(this);
    if(_last) {
        //There was a last object
        if(_last == _this) { // The last object was the current object
            alert('deactiveate for this obj');
        } else { // The last object was not the current object
            alert('deactivate last, activate this');
        }
    } else {
        alert('first object activated');
        var taguid = $(this).prev().attr('data-uid');
        alert(taguid);
        _last = $(this);
    }

    });

2 个答案:

答案 0 :(得分:4)

这是因为对象的引用不一样。一种更简单的方法可能是激活点击的一个,然后停用最后一个。它会产生同样的效果:

var taguid = "";
var _last;
$('.tagbutton').live('click', function() {
if(_last) {
    // There was a last object
    // Activate this
    // Deactivate last
} else {
    alert('first object activated');
    var taguid = $(this).prev().attr('data-uid');
    alert(taguid);
    _last = $(this);
}

});

答案 1 :(得分:2)

jQuery函数$()返回一个jQuery对象,当你第二次调用它时,你会找回另一个对象。

但是,在您的事件处理程序中,关键字this指的是实际的DOM元素,因此如果您直接保存,那么您的比较应该有效:

_this = this;
// and then later
_last = this;