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.

  1. $("span#nyId").click(function(){  
  2.    if($("div.lenyilo").css('display')=='none'){  
  3.        $("div.lenyilo").css('display','block');  
  4.    }else{  
  5.        $("div.lenyilo").css('display','none');  
  6.    }  
  7. });  


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

$(document.body).click(functi

Poetro · 2011. Júl. 7. (Cs), 10.36
  1. $(document.body).click(function () {   
  2.   $("div.lenyilo").hide();   
  3. });  
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.
  1. $("html").click(function(){  
  2.     if($("div.lenyilo").css('display')=='block'){  
  3.         $("div.lenyilo").css('display','none');  
  4.     }  
  5. });  
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ó.
  1. jQuery(function ($) {  
  2.     var lenyilo = $('.lenyilo');  
  3.     $(window).click(function () {  
  4.         lenyilo.is(':visible') ? lenyilo.hide() : lenyilo.show();  
  5.     })  
  6. });  
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:
  1. $('.lenyilo a.hide').click(function() { //Ez egy bezárás gomb a diven. Nem tudom, kell-e neked?  
  2.     $('.lenyilo').hide();  
  3. } );  
  4.   
  5. $('span#nyId').click(function(e) {  
  6.     e.preventDefault();  
  7.   
  8.     $(document).bind('click', layer_hide); //Ha a dokumentumban bárhová kattint, a .lenyilo bezárul  
  9.       
  10.     $('.lenyilo').css({ left: e.pageX - 30,  
  11.                                 top: e.pageY + 10   })  
  12.                         .show()  
  13.                         .unbind('click')  
  14.                         .click(function(e) {  
  15.                                 e.preventDefault();  
  16.                                 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      
  17.                             })  
  18.                         .find('button.ok'//Mondjuk van rajta egy button class="ok", erre is reagáljunk valamit  
  19.                         .unbind('click')  
  20.                         .click(function(e) {  
  21.                                    doSomething();  
  22.                             });  
  23.     return false;  
  24. });  
  25.   
  26. function layer_hide(e) {  
  27.     $('.lenyilo').hide();  
  28.     $(document).unbind('click', layer_hide); //Ha layer bezárult, levesszük az eseményt a document-ről  
  29. }  
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.