Jquery - jak wybrać wszystkie div'y oprócz jednego


(Aglasek) #1

Witam.

Mam coś takiego, że wyświetla mi się powiedzmy ramka po kliknięciu przycisku i teraz chciałbym zrobić coś takiego, że po kliknięciu w dowolne inne miejsce poza tą ramką (każdego innego np. div'a) ta ramka znika ale w tej ramce można klikać dowoli i ona się nie zamknie. Jak coś takiego zrobić w jquery? oczywiście ta ramka jest w środku innych div'ów. Mam coś takiego ale nie działa tak jak bym chciał. Jak poprostu pobrać wszystkie inne div oprócz tego jednego zagnieżdzonego wśród innych? Czy może jest jakieś inne rozwiązanie?

$(function() {

    var a = $('.klasa').parent('div');

    $(a).click(function() {

        $('.klasa').slideUp('fast');

    });

});

(M@ster) #2
$('div:not(.klasa_wykluczonego_diva)').costam()...

Zamiast .klasa może być oczywiście #id, ogółem jakikolwiek selektor.


(Wszerad91) #3

Na jQuery się nie znam ale pewnie da się to zrobić za jej pomocą.

Przypisujemy obiektowi dokument zdarzenie onclick, zdarzenie posiada swoje właściwości jak np target, które zawiera element nad którym zostało dokonane zdarzenie.

Normalnie kod wyglądał by tak:

document.onclick = function(e){

if(e.target.getAttribute('name')!='ramka'){

//kod schowania/usunięcia ramki

}

}

Jest to dość mocno uproszczony kod bo przydało by się jeszcze usuwać zdarzenie obiektu document. Można też wykorzystać zdarzenie onmouseout i onmouseover do sprawdzania czy myszka jest na czy poza ramkom.