Настройки ссылок управления с помощью переключателей и jquery

StackOverflow https://stackoverflow.com/questions/825189

  •  05-07-2019
  •  | 
  •  

Вопрос

Для любых ссылок с определенным классом CSS я хотел бы контролировать, открываются ли ссылки в том же окне, новом окне или всплывающем окне (с помощью onclick), на основе выбора пользователя из группы радио кнопки - и затем сохранить этот выбор в куки (все с помощью jQuery). Кто-нибудь знает, как этого добиться?

Это было полезно?

Решение

Вероятно, именно так я и сделаю ... (вам понадобится плагин jQuery cookie ):

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

Изменить. Извините, что я не проверял это первым. У меня там было несколько опечаток, и я забыл установить cookie для начала (извините). Я проверил его, и теперь он работает с вашим HTML. Используйте только что отредактированный код выше. ; -)

Изменить 2 . Я добавил прямую ссылку на плагин cookie на тот случай, если вы по какой-то причине не используете нужную ссылку.

Изменить 3 . Лично я бы не установил переключатель, как отмечено в javascript ... вы можете получить доступ к тому же файлу cookie на вашем серверном языке, как мне кажется. Но я предоставил способ, который должен работать в моем недавно отредактированном коде.

Изменить 4: . Первоначальная настройка отмеченных ошибок переключателей была исправлена. Это должно действительно сработать в этот раз. Серьезно. о_0

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top