php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2011, 07:27  
Benutzer
 
Registriert seit: 09.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
Karottenkopf51 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard [Erledigt] Div bei Klick außerhalb von Div schließen

Servus,

habe über JavaScript ein kleines Optionsmenü in meiner Galerie eingebaut. Das Öffnen und Schließen an sich funktioniert einwandfrei, allerdings möchte ich das Schließen noch etwas erweitern.

Mit einem Klick auf 'Optionen' erscheint ein Div mit den entsprechenden Optionen. Nun soll sich das Div wieder schließen, wenn ich außerhalb von dem Div die Maustaste drücke.

Habe recherchiert und leider nichts gefunden. Meine Idee war es, dem Body Element ein onClick mit dem entsprechenden Funktionsaufruf zu geben, allerdings wird erst der onClick vom Div und dann der onClick vom Body verarbeitet, womit sich das Div direkt wieder schließt.

Code:
function setOptionsHidden(){
	document.getElementById("options_0").style.visibility = "hidden";
	document.getElementById("options_1").style.visibility = "hidden";
	document.getElementById("options_2").style.visibility = "hidden";
	document.getElementById("options_3").style.visibility = "hidden";
	document.getElementById("options_4").style.visibility = "hidden";
	document.getElementById("options_5").style.visibility = "hidden";
}

function setOptionsVisible(id){
	setOptionsHidden();
	document.getElementById("options_"+id).style.visibility = "visible";
}
Jemand eine Idee?

Gruß
Karottenkopf51 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.08.2011, 08:32  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von Karottenkopf51 Beitrag anzeigen
Meine Idee war es, dem Body Element ein onClick mit dem entsprechenden Funktionsaufruf zu geben
So weit, so gut, jetzt musst du in diesem Event Handler nur noch überprüfen ob target dein div oder ein untergeordnetes Element ist und in dem Fall nichts tun.

Siehe auch Bubbling / Capturing
fab ist offline   Mit Zitat antworten
Alt 29.08.2011, 07:00  
Benutzer
 
Registriert seit: 09.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
Karottenkopf51 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Entschuldigung für die späte Antwort, aber wie genau prüfe ich denn im Body, welches Target (also wo ich gerade hinklicke) ich habe? Aus deinem Link werde ich leider nicht wirklich schlau.
Karottenkopf51 ist offline   Mit Zitat antworten
Alt 29.08.2011, 11:02  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Der Artikel beschriebt JavaScript Event Bubbling.

Das heißt: Wenn du auf ein Kind-Element klickst wird auch der onclick des Elternelements ausgelöst.

Da dein body-Element ein Elternelement von "allem" ist, wird das onlcick hier immer ausgelöst, egal wohin du klickst.

Wie in dem Artikel zu lesne hat ein Event die Eigenschaft target, welche mit dme Element gefüllt ist das ursprünglich angeklickt wurde. D.h. klickst du auf dein div und das body Event istd ran, steht in event.target immernoch das dein div angeklickt wurde. Dadurch kannst du dann auch einfach "nichts" machen wenn das der Fall ist.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 29.08.2011, 11:53  
Benutzer
 
Registriert seit: 09.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
Karottenkopf51 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Kann man auch mit IDs bzw. Namen arbeiten, statt mit den eigentlichen Tags? Wie würden denn diese Abfragen aussehen? Kann mir leider nichts darunter vorstellen.

Also meine DIVs heißen options_0, options_1 etc.

Und diese sollen verschwinden, sobald ich auf den Body, aber nicht auf das betroffene Element klicke.

Geändert von Karottenkopf51 (29.08.2011 um 11:59 Uhr).
Karottenkopf51 ist offline   Mit Zitat antworten
Alt 29.08.2011, 12:25  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Karottenkopf51 Beitrag anzeigen
Kann man auch mit IDs bzw. Namen arbeiten, statt mit den eigentlichen Tags?
Das tust du doch in deinem eingangs gezeigten Code bereits.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 29.08.2011, 13:17  
Benutzer
 
Registriert seit: 09.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
Karottenkopf51 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ja schon, aber ich meine wie prüfe ich mein Target? Ich bräuchte ein Beispiel, ich blicke da einfach nicht durch. Also ich setze ein onClick auf mein Body und rufe eine Funktion auf. In der Funktion prüfe ich, ob das Target = ??? ist? Wie stelle ich das an?
Karottenkopf51 ist offline   Mit Zitat antworten
Alt 29.08.2011, 13:23  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Ach komm, jetzt beschaeftige dich doch bitte mal ein bisschen selber damit

Der Link von fab erklaert doch, was es mit dem target auf sich hat und wie man es abfragt.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 29.08.2011, 13:51  
Benutzer
 
Registriert seit: 09.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
Karottenkopf51 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Code:
function js_strpos(haystack, needle, offset) {
    var i = (haystack + '').indexOf(needle, (offset || 0));
    return i === -1 ? false : i;
}

function bodyCloseAll(e){
    e = e || event;
    var target = e.target || e.srcElement;
	if(js_strpos(target, 'options_', 0) != 0 || js_strpos(target, 'rating_', 0) != 0){
		setOptionsHidden();
	}
}
Ich möchte mit der Funktion bodyCloseAll bezwecken, dass wenn mein target nicht 'options_' oder 'rating_' enthält, alle Divs (setOptionsHidden) geschlossen werden. Es funktioniert aber nicht
Karottenkopf51 ist offline   Mit Zitat antworten
Alt 29.08.2011, 13:59  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Natuerlich funktioniert das nicht, weil das target nicht "'options_' oder 'rating_' enthält" - das target ist ein HTML-Elementobjekt.
Wenn du auf dessen ID-Attribut zugreifen moechtest - dann mach das auch.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Slimbox bei Klick auf Bild schließen d0t JavaScript, Ajax und mehr 3 28.02.2011 19:16
Sicherheitslücke im PHP schließen ???? ben-NRW Scriptbörse 8 14.07.2010 16:58
Mit JS einen KLICK vortäuschen ITrun90 JavaScript, Ajax und mehr 10 04.05.2010 13:47
Link auf Dateien außerhalb des Document Root michael2105 PHP-Fortgeschrittene 9 24.04.2010 22:07
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
Scriptangebot 1 Klick Counter Hosting Script Charbel Scriptbörse 0 23.06.2009 07:43
[Erledigt] per klick (außerhalb vom div) funktion aufrufen amateur_php JavaScript, Ajax und mehr 9 17.10.2008 14:32
[Erledigt] div per Drag&Drop verschieben und bei Klick ausserhalb s Juuro HTML, Usability und Barrierefreiheit 2 11.01.2008 12:30
input inhalt bei klick ändern jar3d HTML, Usability und Barrierefreiheit 3 10.01.2008 16:33
Fenster schließen und neu öffnen lassen max-dhom HTML, Usability und Barrierefreiheit 2 01.04.2007 20:55
Frame schließen und [Erledigt] Div bei Klick außerhalb von Div schließen workaholic HTML, Usability und Barrierefreiheit 2 06.09.2005 13:36
Bildwechsel beim Klick HTML, Usability und Barrierefreiheit 1 12.07.2005 23:49
Text in Input per Klick hinzufügen, bei erneutem Klick lösch 18inch HTML, Usability und Barrierefreiheit 2 05.03.2005 14:01
ADCELL Vermarktung zu 75% Pay per Klick Kampagnen Beitragsarchiv 0 18.10.2004 12:37
fenster "resizen" nach dem schließen PHP Tipps 2004 1 29.09.2004 15:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
click außerhalb schließen, javascript klicken außerhalb element, javascript popup schließen, div mit klick schließen, div schließen bei klick außerhalb, bei klick hidden, wenn maus außerhalb von div dann function, click javascript ausserhalb element, div bei click außerhalb schließen, div bei klick öffnen und schließen, element nach klick außerhalb, javascript außerhalb klicken, div mit click schließen, klicken außerhalb eines elements, div auf click erweitern, css div schließen bei klicken außerhalb, js div wieder schließen, javascript außerhalb schließen, maus außerhalb des elementes klicken javascript, div hidden bei klick außerhalb

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum