Android webview':活跃'当元素处于活动状态时隐藏元素时保持打开状态

时间:2014-08-16 08:00:53

标签: css

我正在为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规则。

帮助?

2 个答案:

答案 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的回答确实帮助我做了一个解决方法,而不是希望有一个修复:active

HTML(摘要)

<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;
}