Przekazanie wartości z pierwszego zdarzenia do drugiego

0

Witam, próba nr. 2 z tytułem. Mam problem, a mianowicie brak pomysłu na przeniesienie wartości z pierwszego zdarzenia, do drugiego. Moim celem jest zrobienie za pomocą jednej funkcji wyświetlanie(po kliknięciu w przycisk) i chowanie diva (po kliknięciu w tło) dla różnych okien na stronie, zamiast dla każdego z osobna. Każdemu przyciskowi przyporządkowałem atrybut data z wartością diva, który ma być pokazany np:

<a class="btn hasbox" data-bind=".popup">Button</a>

JS:

 $('.hasbox').bind('click',function(event){
                var target = $(this).data('bind');
                 target.show;
                 event.stopPropagation();
              });
 
             $('html').click(function() {
                 target.hide(); -> problem polega tutaj, czy macie jakiś pomysł z przekazaniem tutaj wartości z target? Próbowałem poprzez zwracanie wartości przez funkcję, ale nie działa.
             });
0

a nie możesz po prostu chować wszystkich popupów? nadać im wspólną klasę i ukrywać je wszystkie (niezależnie od tego czy są pokazane)?

ps. target.show; - to nie ma prawa działać.

1

żeby mieć 'później' dostęp do wartości zmiennej target można użyć domknięcia:

$(".hasbox").bind("click",function(event){
	var target = $(this).data("bind");
	target.show();
	event.stopPropagation();

	$("html").one("click", function(target) {
		return function( event ) {
			target.hide();
		}
	}(target));
});

zwykle kod jest zupełnie nieszkodliwy jeśli stosuję się go zgodnie z instrukcją, ale ten nie był testowany :)

0
lhp napisał(a):

żeby mieć 'później' dostęp do wartości zmiennej target można użyć domknięcia:

$(".hasbox").bind("click",function(event){
	var target = $(this).data("bind");
	target.show();
	event.stopPropagation();

	$("html").one("click", function(target) {
		return function( event ) {
			target.hide();
		}
	}(target));
});

zwykle kod jest zupełnie nieszkodliwy jeśli stosuję się go zgodnie z instrukcją, ale ten nie był testowany :)

Działa :] ale pytanie, ten kod może gdzieś posiadać podatność?

0

Niestety za szybko się pośpieszyłem... rozwiązanie co prawda chowa okno, ale nie mogę żadnej interakcji przeprowadzić na pojawiającym się oknie, bo wystarczy, że w nie kliknę, to od razu się chowa.

0

ja bym takie cos roziązał jak okienka modalne - po pokazaniu popupa, dajesz mu zindex powiedzmy 10. na zindex 5 dajesz diva, który zajmuje cały obszar strony i jest niewidoczny. klikanie w popup działa, a kliknięcie poza nim wywoła kliknięcie na tym divie niewidocznym, pod które podpinasz chowanie divów.

ew, badasz event.target w clicku html i używając różnych funkcji z jQuery (np. is, closest, find, w zależności od potrzeb) sprawdzasz czy po tym kliknięciu trzeba chować popupa czy nie bardzo

0

U mnie nie do końca jest to popup. Mi chodzi bardziej o takie coś jak na http://behance.net/ gdzie jest **All Creative, Fields Featured, Worldwide ** po kliknięciu w tlo, chowają się panele.

0

mniejsza o to jak to wygląda, skoro działanie jest to samo ;)

0

Jednak zrobiłem na około, ale działa:


$(".hasbox").on("click",function(event){
            var target = $(this).data("bind");
            $(target).show();
            event.stopPropagation();
        });
                
        $("html").on("click",function(e){
            var container = $(".test1, .test2, .test3");
            
            container.each(function(){
                if (!$(this).is(e.target)
                    && $(this).has(e.target).length === 0)
                {
                    $(this).hide();
                }    
            });
            
        });

1 użytkowników online, w tym zalogowanych: 0, gości: 1