2014-03-31 1 views
0

this Stack Overflow q/a에있는 조언에 따라 쿠키를 통해 클릭을 트리거하려고합니다. 쿠키는 라디오 버튼 선택으로 설정됩니다. 전환되는 두 div 중 하나가 숨겨져 있어야합니다.라디오에서 클릭 트리거링 작동하지 않는 쿠키

문제 : 초기 if 문이 클릭을 유발하지 않습니다.

if($.cookie('light-or-dark')) { 
    $($.cookie('light-or-dark') + '-radio').attr('checked', true).trigger('click'); 
    } else { 
    $('#theme-schemes-dark').hide(); 
    }; 

// the toggle on radio button change function 
$('[name=light-dark-radio]').change(function(){ 
    $('#theme-schemes-light').toggle('medium'); 
    $('#theme-schemes-dark').toggle('medium'); 

    // set cookie on toggle state 
    $.cookie('light-or-dark', '#theme-schemes-' + this.value, {expires:365, path: '/'}) 
    }) 

html로 :

<div class="selection-wrap"> 
    <label> 
    <input type="radio" name="light-dark-radio" id="theme-schemes-light-radio" value="light" checked> 
    Light 
    </label> 
    <label> 
    <input type="radio" name="light-dark-radio" id="theme-schemes-dark-radio" value="dark"> 
    Dark 
    </label> 
</div> 

<!-- first div --> 
<div class="selection-wrap" id="theme-schemes-light"> 
    <a class="theme-scheme-btn color-box bg-blue" id="defaultThemeScheme" href="#">Light 1</a> 
    <a class="theme-scheme-btn color-box bg-yellow" href="#">Light 2</a> 
</div> 

<!-- second div - hidden by default -->   
<div class="selection-wrap" id="theme-schemes-dark" style="display: none"> 
    <a class="theme-scheme-btn color-box dark-color-blue" href="#">Dark 1</a> 
    <a class="theme-scheme-btn color-box dark-color-yellow" href="#" >Dark 2</a> 
</div> 

A FIDDLE to better illustrate

는 많은 통찰력 따랐습니다.

+0

이 객체가 '$ ($. 쿠키 ('빛 또는 어두운 ') +'- 라디오 ')', 무엇을 console.log 설립 복원 내가 코드를 변경,이 시도 ($ ($. 쿠키 ('밝게 또는 어둡게') + '- 라디오')))가 표시됩니까? –

+0

흠 ... 정의되지 않은 상태로 반환됩니다. 경고와 같은 명령을 실행하면'[object Object]'가 나타납니다 –

+0

이 라디오 버튼과 두 개의 div로 html 코드를 붙여 넣을 수 있습니까? –

답변

0

사업부의

if($.cookie('light-or-dark')) { 

$($.cookie('light-or-dark') + '-radio').attr('checked', true); 
    $('#theme-schemes-light').hide(); 
    $('#theme-schemes-dark').hide(); 
    $($.cookie('light-or-dark')).show(); 
} else { 
$('#theme-schemes-dark').hide(); 
}; 

$('[name=light-dark-radio]').change(function(){ 
$('#theme-schemes-light').toggle('medium'); 
$('#theme-schemes-dark').toggle('medium'); 
// set cookie on toggle state 
$.cookie('light-or-dark', '#theme-schemes-' + this.value, {expires:365, path: '/'}); 
}) 
+0

일했습니다! 나는 라디오에서 클릭 동작을 얻으려고 시도하는 것이 이것에 대한 좋은 경로가 아니라고 생각한다. 많은 감사합니다. –

0

같은 문제가없는 것 같습니다. (http://jsfiddle.net/jaLQZ/3/)

$($.cookie('light-or-dark') + '-radio').click(function(){ 
    alert('click' + this.value); 
    }); 

    if($.cookie('light-or-dark')) { 
    $($.cookie('light-or-dark') + '-radio').attr('checked', true).trigger('click'); 
    } else { 
    $('#theme-schemes-dark').hide(); 
    }; 

    $('[name=light-dark-radio]').change(function(){ 
    $('#theme-schemes-light').toggle('medium'); 
    $('#theme-schemes-dark').toggle('medium'); 
    // set cookie on toggle state 
    $.cookie('light-or-dark', '#theme-schemes-' + this.value, {expires:365, path: '/'}); 
    }) 

어쩌면 당신은 쿠키 플러그인을 지원 나던 브라우저를 사용하고 있습니까?

+0

아니요, 최신 Chrome을 사용하고 있으며 쿠키가 제대로 작동하고 있습니다. 문제는 페이지를 전환 할 때 다른 페이지를 클릭하기 전에 어둡게 선택 했더라도 전환 된 div가 기본값 (밝게)으로 되돌아가는 문제입니다. 그래서 어떤 이유 때문에 라디오가 처음'if' 문을 통해 클릭되지 않는 것 같습니다. –

관련 문제