Frage

Für alle Links zu einer bestimmten CSS-Klasse möchte ich steuern, ob die Links im selben Fenster, einem neuen Fenster oder einem Popup (mit Onclick) geöffnet sind, basierend auf der Auswahl des Benutzers aus einer Gruppe von Optionsschaltflächen- und speichern Sie diese Auswahl in einem Cookie (alle mit jQuery). Weiß jemand, wie man das erreicht?

War es hilfreich?

Lösung

So wahrscheinlich würde ich es tun ... (Sie werden das brauchen JQuery Cookie Plugin):

<script language="javascript">
$(function() {
    if($.cookie('link_pref')) {
    var link_pref = $.cookie('link_pref');
        $('#link_options_form :radio[value="'+ link_pref+'"]')
        .attr('checked','checked');
    }
    $.cookie('link_pref',$('#link_options_form :radio:checked').val(), {expires: 0});
    $('#link_options_form :radio').unbind('click').bind('click',function() {
         $.cookie('link_pref', $(this).val(), {expires: 0});
    });
    $('a').unbind('click').bind('click',function() {
        var link_pref = $.cookie('link_pref');
        var href = $(this).attr('href');
        var link_txt = $(this).text();
        switch(link_pref) {
            case 'new':
                $(this).attr('target','_blank');
                return true;
            case 'pop':
                window.open(href,link_txt,'width=640,height=480,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
                return false;
            case 'greybox':
                // Other options found here: 
                // http://orangoo.com/labs/greybox/advance_usage.html
                GB_show(link_txt, href);
                return false;
            default:
                $(this).attr('target','_self');
                return true;
        }
    });
});
</script>

<form id="link_options_form">
    <label><input type="radio" name="link_options" value="same" /> Open in Same Window</label>
    <label><input type="radio" name="link_options" value="new" /> Open in New Window</label>
    <label><input type="radio" name="link_options" value="pop" /> Open in Pop-Up Window</label>
    <label><input type="radio" name="link_options" value="greybox" /> Open in Greybox</label>
</form>

Bearbeiten: Tut mir leid, dass ich es nicht zuerst getestet habe. Ich hatte ein paar Tippfehler da drin und habe vergessen, den Keks von Anfang an zu setzen (sorry). Ich habe es getestet und es funktioniert jetzt mit Ihrem HTML. Verwenden Sie den neu bearbeiteten Code oben. ;-)

Bearbeiten 2: Ich habe einen direkten Link zum Cookie -Plugin hinzugefügt, nur für den Fall, dass Sie aus irgendeinem Grund nicht die richtige verwenden.

Bearbeiten 3: Persönlich würde ich das Optionsfeld nicht so einstellen, wie in JavaScript überprüft wird ... Sie können in Ihrer serverseitigen Sprache, glaube ich, auf dasselbe Cookie zugreifen. Aber ich habe einen Weg zur Verfügung gestellt, der in meinem neu bearbeiteten Code funktionieren sollte.

EDIT 4: Die anfängliche Einstellung des geprüften Optionsfelderfehlers wurde behoben. Diesmal sollte es wirklich wirklich funktionieren. Wirklich. O_0

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top