我实际上是在带有“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);
}
});
答案 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;