onmousedown ruft alle elemente auf / Function geht nur wenn drinnen ein alert() vorkommt.

  • Hallo,
    folgendes Problem:
    Wenn ich in der function irgend ein Alert ausgebe, wird bei untergeordneten li Elementen die sID richtig übertragen, ansonsten wird immer die sID des übergeordneten li Elements übertragen.




    element ist ein this was bei klick auf ein Element im Menü abgefangen wird.
    Ich verstehe nicht, wieso das Fehler macht.


    Edit:


    hier sieht man was passiert: JSFiddle


    Wie kann ich das verhindern?

  • Klar - wenn du auf geschachtelte Elemente klickst werden immer alle (mit dem innersten beginnend) onclicks abgefeuert - der äußere überschreibt dann den inneren, deshalb bekommst du die Zahl vom äußeren (lass dir die Zahlen mal auf der Konsole ausgeben, da kommen dann beide hintereinander).
    Wenn du das verhindern willst musst du das ganze nach dem ersten Klick mit einem return abbrechen. Der alert hat bei dir diese Funktion quasi übernommen, deshalb hat es damit funktioniert.

    JavaScript
    var sID = 0;
    var cID = 0;
    function seite(element){
        sID = $(element).attr('name');
        document.getElementById("sid").innerHTML= sID;
    }
    $(".h_menu").click(function(event) {
        seite(this); 
        return false;
    })


    so sollte es gehen :)
    Nebenbei, wenn du schon jQuery verwendest kannst du dann auch den ajax-Zugriff mit jQuery machen ;)

  • Danke, hätte ich schon fast selbst drauf kommen können es abzubrechen. :D
    Das alle abgefeuert werden, is ja klar, hab ich spätestens gemerkt als ich es in JSFiddle hab laufen lassen.


    Edit: ja, reintheoretisch funktioniert es allerdings nicht hiermit:

    JavaScript
    $(".h_menu").mousedown(function(event) {
    	if (event.which == 1) {
    		chk(this);
    	};
    	return false;
    })

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!