2009-05-05 2 views
2

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

ответ

3

Это, вероятно, как бы я это сделать ... (Вам понадобится 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> 

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

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

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

Редактировать 4: Исправлена ​​ошибка, связанная с исправленной ошибкой переключателей. На этот раз он действительно должен работать. Серьезно. o_0

+0

Спасибо за ваш ответ, Кайл, но я не мог заставить это работать. Вот полный код страницы, который я использовал: http://textsnip.com/734b04 - спасибо за вашу помощь. – user55655

+0

Спасибо за вашу помощь! Я получил его на работу, но он вызывает множество ошибок в браузере. «Слишком много рекурсии», среди прочих. (Не уверен, что это значит). Также, как только я выбрал опцию «новое окно» и открыл ссылку, а затем снова выберите «то же окно», он все еще использует новое окно для ссылок. Есть идеи? Еще раз спасибо. – user55655

+0

Я не уверен в проблеме рекурсии, так как я не зацикливаюсь ни на чем. Вы получаете ошибку в Firefox? Сколько ссылок у вас есть на этой странице? Это может быть проблемой. В любом случае исправлена ​​ошибка «нового окна»/«того же окна». Я обновил код выше. – KyleFarris