2009-05-05 9 views
2

Für alle Links mit einer bestimmten CSS-Klasse, würde ich gerne steuern, ob die Links im gleichen Fenster, ein neues Fenster oder ein Pop-up (mit onclick) basiert auf die Auswahl des Benutzers aus einer Gruppe von Radio-Schaltflächen - und speichern Sie diese Wahl in einem Cookie (alle mit jQuery). Wer weiß, wie man das erreicht?Steuer-Link-Einstellungen mit Radio-Button-Steuerelemente und jquery

Antwort

3

Dies ist wahrscheinlich, wie ich es tun würde ... (Sie erhalten die jQuery cookie plugin benötigen):

<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> 

Edit: Sorry, dass ich es nicht zuerst testen haben. Ich hatte ein paar Tippfehler drin und ich habe vergessen, den Cookie zu setzen, um damit zu beginnen (Entschuldigung). Ich habe es getestet und es funktioniert jetzt mit Ihrem HTML. Verwende den neu editierten 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.

Edit 3: Persönlich würde ich nicht den Radio-Button wie in Javascript aktiviert ... Sie können auf den gleichen Cookie in Ihrer serverseitigen Sprache, glaube ich, zugreifen. Aber ich habe einen Weg vorgesehen, der in meinem neu bearbeiteten Code funktionieren sollte.

Bearbeiten 4: Die Anfangseinstellung des Fehlers der aktivierten Radioknöpfe wurde korrigiert. Es sollte wirklich wirklich dieses Mal funktionieren. Wirklich. o_0

+0

Danke für Ihre Antwort, Kyle, aber ich konnte das nicht zur Arbeit bekommen. Hier ist der vollständige Seitencode, den ich benutzt habe: http://textsnip.com/734b04 - danke für deine Hilfe. – user55655

+0

Danke für Ihre Hilfe! Ich habe es zum Laufen gebracht, aber es löst viele Fehler im Browser aus. "Zu viel Rekursion", unter anderem. (Nicht sicher, was das bedeutet) Nachdem ich die Option "neues Fenster" ausgewählt und einen Link geöffnet habe und dann wieder "dasselbe Fenster" wähle, wird immer noch ein neues Fenster für die Links verwendet. Irgendwelche Ideen? Danke noch einmal. – user55655

+0

Ich bin mir über das Rekursionsproblem nicht sicher, da ich nichts überlesen kann. Erhalten Sie den Fehler in Firefox? Wie viele Links hast du auf dieser Seite? Das könnte das Problem sein. Wie auch immer, der Fehler 'Neues Fenster'/'Gleiches Fenster' wurde behoben. Ich habe den obigen Code aktualisiert. – KyleFarris