2014-09-19 2 views
0

위의 코드는 2 개의 라디오 버튼을 클릭 할 때 2 div의 값을 표시하거나 숨 깁니다. 나는 jquery에 익숙하지 않기 때문에이 동일한 기능을 작성하는 더 좋은 방법이 있는지 알고 싶습니다. 당신이 두 번째 if을 줄일 수에 대해 걱정하고 else라디오 버튼에 대한 코드를 최적화하는 데 도움이 필요합니다

$('input[type="radio"]').change(function(){ 
    if ($('#subscribe').is(':checked')){ 
     $("#subNow").show(); 
     $('#oneTime').hide(); 
    } 
    else{ 
     $('#oneTime').show(); 
     $("#subNow").hide(); 
    } 
}); 

을 배치하는 다른 국가가없는 경우

+2

1000 개의 체크 박스가없고 몇 개의 이벤트 만 필요로하지 않는 한 그 코드에는 아무런 문제가 없습니다. – Popnoodles

+0

라디오 상자에 값을 추가하십시오. 그런 다음 각 라디오가 선택되어 있는지 확인하십시오. 'value =='onetime '일 경우 jQuery ('# onetime ')와 같은 값을 사용할 수 있습니다. hide()' – andrex

답변

0

또한이 나는 것 정확히 방법입니다 switch

+0

도와 주셔서 감사합니다. 잘 작동합니다. –

1

사용할 수 있습니다 이 작업을 수행. 유일한 다른 옵션은 라디오 버튼의 가치를 얻는 것이지만, 본질적으로 당신이 이미 가지고있는 것과 똑같은 것을 할 것입니다. 당신은 설치 초기 상태는, #subNow { display: none; } 말을 한 후 바로 .toggle() 방법을 사용하는 경우

+0

질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남기십시오. 자신의 게시물에 언제나 댓글을 달 수 있으며 충분한 [평판] (http://stackoverflow.com/help/whats-reputation)을 갖게되면 [모든 게시물에 댓글을 달 수] 있어야합니다 (http://stackoverflow.com/help/privileges/comment). – GibboK

+0

@GibboK 사용자는 기본적으로 그가 올바른 방법으로이 작업을 수행했는지 묻기 때문에 내 대답은 이것이 실제로 어떻게 수행되어야하는지에 대한 응답이었습니다. 따라서 IMO는 질문에 대한 직접적인 대답을 제공합니다. –

2

, 어떤 조건

$('input[type="radio"]').change(function(){ 
 
    $("#subNow").toggle(); 
 
    $('#oneTime').toggle(); 
 
});
#subNow { 
 
    display: none; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type='radio' name='rd' checked />1 
 
<input type='radio' name='rd' />2 
 
<br /> 
 
<div id="subNow">subNow</div> 
 
<div id="oneTime">oneTime</div>
또한

,

... 무엇을 그리 이제까지 확인되지

마크 업을 따라 가면 JS를 떨어 뜨리고 CSS 전용으로 이동하는 이유는 무엇입니까 ??

input[type="radio"]:nth-child(2):checked ~ #oneTime, 
 
#subNow 
 
{ 
 
    display: none; 
 
} 
 

 
input[type="radio"]:nth-child(2):checked ~ #subNow{ 
 
    display: block; 
 
}
<input type='radio' name='rd' checked />1 
 
<input type='radio' name='rd' />2 
 
<br /> 
 
<div id="subNow">subNow</div> 
 
<div id="oneTime">oneTime</div>

+0

나는 똑같은 +1 –

+0

답장을하려고했는데'$ ("# subNow, #oneTime) .toggle();' – gkc

1

한 가지 방법은 일반적인 클래스를 사용하는 데이터는 또한 사용하여 순수 CSS의 솔루션이

$(".rads").on("change", '[type="radio"]', function (e) { 
 
     var show = $(this).data("show"); 
 
     $(".details").hide().filter(show).show(); 
 
    });
.details { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="rads"> 
 
     <input type="radio" id="x" name="rad" data-show=".foo" /> 
 
     <label for="x">A</label> 
 
     <input type="radio" id="y" name="rad" data-show=".bar" /> 
 
     <label for="y">B</label> 
 
    </div> 
 
    <div class="foo details">Apple</div> 
 
    <div class="bar details">Bacon</div>

속성 : 선택 선택합니다.

관련 문제