Pergunta

Para qualquer links com uma classe CSS específica, gostaria de controlar se os links abrem na mesma janela, uma nova janela ou um pop-up (usando OnClick), com base na seleção do usuário de um grupo de botões de rádio- e, em seguida, salve essa escolha em um cookie (tudo usando jQuery). Alguém sabe como fazer isso?

Foi útil?

Solução

Provavelmente é assim que eu faria ... (você precisará do 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>

Editar: Desculpe por não ter testado primeiro. Eu tinha alguns erros de digitação lá e esqueci de definir o biscoito para começar (desculpe). Eu testei e agora funciona com o seu HTML. Use o código recém -editado acima. ;-)

Editar 2: Eu adicionei um link direto ao plug -in de cookie, por caso de você que, por algum motivo, não esteja usando o certo.

Editar 3: Pessoalmente, eu não definiria o botão de rádio como verificado em JavaScript ... você pode acessar o mesmo cookie no idioma do lado do servidor, acredito. Mas, forneci uma maneira que deve funcionar no meu código recém -editado.

Edit 4: A configuração inicial do bug dos botões de rádio marcada foi corrigida. Deve realmente funcionar realmente desta vez. Sério. O_0

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top