我正在为Android构建一个html-app,我遇到了一个问题:active css规则。当我隐藏一个':active'时,它的工作方式应该是这样。国家永远不会被解雇。
例如: 我有一个关于这个css的按钮:
.button:active { background-color:rgba(0,0,0,0.5); }
和这个javascript:
$(".button").on("click",function(evt){
$(evt.originalEvent.target).css("display","none");
});
当我点击按钮时,它会被隐藏。但是当我取消隐藏它时,它仍然会应用.button:active css规则。
帮助?
答案 0 :(得分:0)
尝试以下
$(".button").on("click",function(evt){
$(evt.originalEvent.target).removeClass("active");/*Or whatever your class name is**/
$(evt.originalEvent.target).css("display","none");
});
答案 1 :(得分:0)
我认为我使用了MAJOR解决方法(因为触摸的event.target返回用户点击的元素,这可能是绑定事件的实际元素的子节点(参见下面的示例,它将返回[img] elem,而不是[div]。。Seufs。
PS:@ Richa的回答确实帮助我做了一个解决方法,而不是希望有一个修复:activeHTML(摘要)
<div class='button activatablel'><img src='someicon.png'></div>
<强> CSS 强>
.activatablel { /* nothing, just used to find the elements with jquery) */ }
.activatablel_active {
background:#f00;
}
<强> JAVASCRIPT 强>
elems = $(".activatablel");
for (var i in elems) {
var elem = elems[i];
elem.ontouchstart = function(evt) {
// Now we have to find the ACTUAL element that bound this event
// because somebody decided it's useful to not do this &$*((@^#))_
var foundTheActualTarget = false;
var thetarget = evt.target;
var whilenum = 0;
while (!foundTheActualTarget) {
if (thetarget.className) {
if (thetarget.className.indexOf("activatablel")>=0) {
foundTheActualTarget = true;
break;
}
}
thetarget = thetarget.parentNode;
whilenum++;
if (whilenum>256) { break; } // TODO: unless we intend to do this job in Reno, we're in Barney
}
if ($(thetarget).hasClass("activatablel_active")) { return; }
$(thetarget).addClass("activatablel_active");
}
elem.ontouchend = function(evt) {
$("*").removeClass("activatablel_active");
}
elem.ontouchcancel = elem.ontouchend;
}