Hirdetés

Keresés

Új hozzászólás Aktív témák

  • jeges
    senior tag

    írtam, hogy class-t definiálni kell nyilván css-ben (mondjuk display:none; )
    abban igazad van, hogy mindig hozzáadódik, de ezt egy class vizsgálattal lehet rendezni.
    pl.

    function hasClass(ob,cl) {
    var r = new RegExp("\\b" + cl + "\\b", "i");
    if ( ob && ob.className && ob.className.match(r) !== null ) return true;
    return false;
    }

    a document.onmouseup-ba pedig vedd be, hogy csak akkor adja hozzá a classt, ha a fenti fv false-ot ad.

    pl.
    var lm = document.getElementById("ID");
    if (!hasClass(lm, "hiddenClass"))lm.className += " hiddenClass";

    szerk: jelen esetben ez úgy fog kinézni, hogy
    if (t != lm && !hasClass(lm, "hiddenClass"))lm.className += " hiddenClass";

    no most van egy kis időm öszeszedni a kódot:

    css:

    .hiddenClass {display:none;}

    js:

    function hasClass(lm,cl) {
    var r = new RegExp("\\b" + cl + "\\b", "i");
    if ( lm && lm.className && lm.className.match(r) !== null ) return true;
    return false;
    }

    function addClass(lm,c){
    lm.className = (lm.className.length > 0) ? lm.className + " " + c : c;
    }

    function isParent(p,lm){
    if(!p || !lm)return false;
    if ( p == lm ){
    return true;
    } else if (lm.parentNode) {
    while (lm = lm.parentNode){ if ( p == lm ) return true; }
    }
    return false;
    }

    document.onmouseup = function(e){

    if (!e)e = window.event;
    var t = e.target || e.srcElement;

    var lm = document.getElementById("ID"); // ez itt az eltüntetendő elem

    if(!hasClass(lm, "hiddenClass") && !isParent(lm, t))lm.className += "hiddenClass";

    }

Új hozzászólás Aktív témák