2012-03-24 15 views
0

Das funktioniert in allen anderen Browsern und ich habe keine Ahnung, was das Problem ist. Ich habe es eilig, also dachte ich, ich würde dich fragen, falls ich etwas Offensichtliches verpasse. Ich habe einen Link, auf den Sie klicken, der ein Popup einleitet, und in Firefox (und möglicherweise Oper) scrollt die Seite automatisch nach oben.Wie verhindere ich das automatische Scrollen nach oben in jQuery?

$('[class*=popup-link]').click(function(e) { 

    /* Prevent default actions */ 
    e.preventDefault(); 
    e.stopPropagation(); 

    /* Get the id (the number appended to the end of the classes) */ 
    var name = $(this).attr('class'); 
    var id = name[name.length - 1]; 

    /* Show the correct popup box, show the blackout and disable scrolling */ 
    $('#popup-box-'+id).show(); 
    $('#blackout').show(); 
    $("html,body").css("overflow","hidden"); 

}); 

Ich brauche sowohl preventDefault und stopPropagation, um einige andere Dinge zu stoppen. Können Sie Fehler oder eine Möglichkeit sehen, das automatische Scrollen nach oben zu stoppen? Vielen Dank!

Quick Edit:

Ich laufe auch eine Funktion, die die Box

mit Zentren
$(window).scroll(centerBox); 

Ich bin nicht sicher, ob dies in Firefox in seltsamer Weise Scrollen beeinflussen würde. Der Inhalt dieser Funktion fügt nur CSS hinzu, also bezweifle ich, dass sie etwas bewirken würde.

Ein weiterer Edit:

Ein Link, um es auszuprobieren. Ich arbeite nicht in Firefox. http://inserthtml.com/demo/internal-popup/

+0

sein Haben Sie versucht, das Popup aus dem Bildschirm zu bewegen, anstatt sie zu verstecken, dann es zurückstellen, um es zu zeigen ?? Das wird garantieren, dass sein Zustand erhalten bleibt. – Diego

+0

Ich habe es auf Position gebracht: absolut. Dies ist der einfachste Weg, es zu tun IMO – Johnny

Antwort

1

Erstens, ich sehe nichts falsch im Skript. es sollte den "top jump" auch nur mit e.preventDefault() verhindern. versuchen Sie es bis dahin. es sagen soll, wenn diese Handler es ist oder nicht

$('[class*=popup-link]').click(function(e) { 

    e.preventDefault(); //prevent the click from jumping esp on hashes 
    e.stopPropagation(); //prevent from any parent click handlers that didn't prevent the jump 

    //no code here for now 

    return false;   //the natural way to prevent the jump 
}); 

wenn dieser Code verhindert, dass der Sprung zu verursachen, dann ist es etwas in dem Rest des Codes, die es besonders gebrochene Schriften verursacht. die Konsole auf Fehler überprüfen auch

+0

Ich habe es versucht, es hat nicht funktioniert. Schauen Sie sich den Link für eine Demo an. Möglicherweise müssen Sie die Größe des Fensters ändern, nach unten scrollen und auf den Link klicken, um ihn wieder nach oben zu sehen. – Johnny

+0

Es ist Ihr Scroller-Skript, das die Seite erhöht. Es ist nicht der Sprung, der durch eine Hash-Änderung verursacht wird (ich habe versucht, den href in einen "toten Hash" '#' zu ändern und den Hash nicht geändert, also hat 'e.preventDefault()' wie erwartet funktioniert). Versuchen Sie, die Koordinaten Ihrer Schriftrolle zu überprüfen. es könnte weit weg sein. – Joseph

+0

Für alle, die sich fragen, habe ich gerade $ ('html') hinzugefügt. ScrollPos ($ (window) .scrollTop); zu allen Klickereignissen. – Johnny

1
e.preventDefault(); 
e.stopPropagation(); 

äquivalent zu

return false; 

sie ändern, und Sie werden feine

+0

Ich habe es versucht, es hat nicht funktioniert. Schauen Sie sich den Link für eine Demo an. Möglicherweise müssen Sie die Größe des Fensters ändern, nach unten scrollen und auf den Link klicken, um ihn wieder nach oben zu sehen. – Johnny

+0

@Johnny, Was genau willst du? Erklären Sie bitte in einfachen Worten :) – Starx

Verwandte Themen