2017-12-29 1 views
2

드롭 다운에서 예를 선택하면 "ul"을 표시하려고합니다. 그것을 클릭하면 잘 작동합니다. 하지만 '예'옵션이 이미 선택되어 있거나 옵션 '아니오'가 이미 선택되어있는 경우 숨길 경우 페이지로드시이를 원합니다.jQuery show hide 선택에 따라 un-orderd 목록 표시

$(document).ready(function(){ 
 
     $('#Limit').on('change', function() { 
 
      if (this.value == 'true') 
 
      { 
 
      $("#first-piller").show(); 
 
      } 
 
      else 
 
      { 
 
      $("#first-piller").hide(); 
 
      } 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="Limit"> 
 
     <option value="true" selected>Yes</option> 
 
     <option value="false">No</option> 
 
     </select> 
 
     
 
     <!-- Show hide depending selection --> 
 

 
     <ul id="first-piller"> 
 
     <li> 
 
     <div class="left col-sm-6 col-xs-6 text-left left-indent" id="overview" > 
 
     <p><b>First Piller</b></p> 
 
     </div> 
 
     <div class="right col-sm-6 col-xs-6" class="pillers"> 
 
     <select><option value="1">4 or more</option> 
 
      <option value="2" >0 - 3 </option> 
 
      <option value="3" >0 or more</option> 
 
     </select> 
 
     </div> 
 
     </li> 
 
     </ul>

는 사람이 좀 도와 줄래 ? 미리 감사드립니다.

+0

단지 $ 경우 준비에만 변경 이벤트하지만 문서를 사용하지 마십시오 ('#Limit') .Val() == true 또는 $ ('# Limit 옵션 : selected') val() == show hide 뒤에 true .. 당신은 change 이벤트에 writte와 동일한 코드를 써야합니다. $ ('# Limit') .val(), 변경시에는 두 개의 이벤트가 필요하고 선택된 경우에는 문서에서 준비가 필요합니다. – Spizzi

답변

2

당신의 DOM이 준비하고 change 이벤트가 결합 된 후, 수동으로 실행할 수있는 경우 :

$(document).ready(function() { 
    // your rest of the code 

    $('#Limit').change(); 
}); 

이 결국 이벤트 핸들러의 코드를 실행합니다 변경 이벤트를 트리거합니다.

+0

페이지를 렌더링 할 때 PHP에서 어떤 것을 선택해야하는지 (예 또는 아니오)를 처리하기 때문에 Jquery를 사용하여 이미 전환되었는지 감지하고 싶습니다. 이 점을 적용하는 방법을 알려 주실 수 있습니까? – Zain

+0

@Zain - 게시 한 코드가 자동으로 처리됩니다. 값을 확인한 다음 그에 따라 'ul'을 숨기거나 표시합니다. – 31piy

-1

당신은 그 자체로 논리를 추출하는 것입니다 함수를 작성 .ready 기능

$(document).ready(function() { 
// Code you want to run at the start 
}) 
+0

정말 내가 뭘 박았는지 이해하지 못한다 -1, 당신은 옳은 일을하고 사람들은 -1을 말함은 어리석은 짓이라고 말했다. ... 단지 코멘트를 작성하는 것은 단지 수백만 줄의 코드를 작성하는 대신에 매우 간단하다. $ (document) .ready (function() {if ($ ('# Limit') .val() == 'true') {}}) – Spizzi

0

을 사용하고 두 경우 모두

function FirstPiller(sender) 
{ 
if (sender.val() == 'true') 
    { 
    $("#first-piller").show(); 
    } 
    else 
    { 
    $("#first-piller").hide(); 
    } 
} 

$(document).ready(function(){ 

    FirstPiller($('#Limit')); 
    console.log("Calling"); 
}); 

$('#Limit').on('change', function() { 
    FirstPiller($(this)); 
}); 
0

이 경우에 할 수있는 스마트 한 것에 호출 할 수 있습니다 기능 (예 : 토글 필). 그런 식으로 당신은 문서로드를 발사하고 또한 change 이벤트 처리기에서 콜백로에 전달할 수 있습니다

$(document).ready(function() { 
 
    var $limit = $('#Limit'); 
 
    var $firstPillar = $("#first-piller"); 
 
    
 
    togglePillar(); 
 
    
 
    $limit.on('change', togglePillar); 
 

 
    function togglePillar() { 
 
    if ($limit.val() == 'true') { 
 
     $firstPillar.show(); 
 
    } else { 
 
     $firstPillar.hide(); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="Limit"> 
 
    <option value="true" selected>Yes</option> 
 
    <option value="false">No</option> 
 
    </select> 
 

 
<!-- Show hide depending selection --> 
 

 
<ul id="first-piller"> 
 
    <li> 
 
    <div class="left col-sm-6 col-xs-6 text-left left-indent" id="overview"> 
 
     <p><b>First Piller</b></p> 
 
    </div> 
 
    <div class="right col-sm-6 col-xs-6" class="pillers"> 
 
     <select><option value="1">4 or more</option> 
 
     <option value="2" >0 - 3 </option> 
 
     <option value="3" >0 or more</option> 
 
    </select> 
 
    </div> 
 
    </li> 
 
</ul>