ugrás a tartalomhoz

jQuery div eltüntetése

NZol · 2011. Júl. 7. (Cs), 10.00
Sziasztok!

Van egy div, ami mondjuk egy span elemre kattintva megjelenik illetve eltűnik (ez működik is).
Azt szeretném elérni ha az oldalon bárhová kattintunk eltűnjön a div.


       $("span#nyId").click(function(){
          if($("div.lenyilo").css('display')=='none'){
              $("div.lenyilo").css('display','block');
          }else{
              $("div.lenyilo").css('display','none');
          }
       });


Előre is köszönöm a segítséget.
 
1

$(document.body).click(functi

Poetro · 2011. Júl. 7. (Cs), 10.36
$(document.body).click(function () { 
  $("div.lenyilo").hide(); 
});
2

Ez sajnos így nem működik,

NZol · 2011. Júl. 7. (Cs), 10.50
Ez sajnos így nem működik, nem jelenik meg a div.
Gondolom ezt az én script -em elé kell beszúrni.

Hasonlóval már próbálkoztam, de így sem működik.

       $("html").click(function(){
           if($("div.lenyilo").css('display')=='block'){
               $("div.lenyilo").css('display','none');
           }
       });
4

Megjelenik?

Poetro · 2011. Júl. 7. (Cs), 11.01
Azt szeretném elérni ha az oldalon bárhová kattintunk eltűnjön a div.

Te azt írtad, hogy el kell, hogy tűnjön. Megjelenésről nem volt szó.
jQuery(function ($) {
    var lenyilo = $('.lenyilo');
    $(window).click(function () {
        lenyilo.is(':visible') ? lenyilo.hide() : lenyilo.show();
    })
});
7

Te azt írtad, hogy el kell,

kuka · 2011. Júl. 7. (Cs), 11.42
Te azt írtad, hogy el kell, hogy tűnjön. Megjelenésről nem volt szó.
De lett. Szerintem azért, mert a nyitó span a dokumentumban van és ugyanaz a kattintás ami megnyitotta, azonnal le is zárta. Valószínűleg egy stopPropagation() hiányzott. De csak elmélet, jQuery-hez nem értek.
3

Én így csinálnám:

bb0072 · 2011. Júl. 7. (Cs), 10.53
Én így csinálnám:

 $('.lenyilo a.hide').click(function() { //Ez egy bezárás gomb a diven. Nem tudom, kell-e neked?
		$('.lenyilo').hide();
	} );

	$('span#nyId').click(function(e) {
		e.preventDefault();

		$(document).bind('click', layer_hide); //Ha a dokumentumban bárhová kattint, a .lenyilo bezárul
		
		$('.lenyilo').css({	left: e.pageX - 30,
									top: e.pageY + 10	})
							.show()
							.unbind('click')
							.click(function(e) {
									e.preventDefault();
									e.stopPropagation(); //Ezzel 'felülírjuk' a document-hez kötött, click eseményt, vagyis nem adjuk tovább a .lenyilo-n történt kattintást	
								})
							.find('button.ok') //Mondjuk van rajta egy button class="ok", erre is reagáljunk valamit
							.unbind('click')
							.click(function(e) {
                                    doSomething();
								});
		return false;
	});

	function layer_hide(e) {
		$('.lenyilo').hide();
		$(document).unbind('click', layer_hide); //Ha layer bezárult, levesszük az eseményt a document-ről
	}

5

A left és a top beállítás

bb0072 · 2011. Júl. 7. (Cs), 11.04
A left és a top beállítás azért van, hogy a span alatt jelenjen meg az abszolut pozíciójú div. Persze nem tudom, hogy erre szükséged van-e, illetve nyilván itt lehet egészen mást is csinálni.
6

Most már működik rendesen.

NZol · 2011. Júl. 7. (Cs), 11.16
Most már működik rendesen.
Áttanulmányozom, hogy mit miért is csinál pontosan.

Köszönöm mindkettőtök segítségét.