2017-04-24 2 views
0

jQuery 클릭 메서드를 사용하여 페이지의 특정 부분을 클릭 한 후 내 섹션의 일부를 표시하거나 숨길 수 있습니다. JQuery Click 함수가 한 번만 작동합니다.

내 HTML 코드 :

<section class="apply_section text-center center-block" id="apply_section"> 
     <div class="apply_container"> 

     <div class="container"> 
      <div class="row apply_row"> 

      <div class="col-md-8 apply_form"> 
       <form class="form" action="mail.php" method="POST"> 
       <div class="col-md-6"> 
        <div class="form-group"> 
        <input class="form-control" type="text" placeholder="" required="required" name="firstName"> 
        </div> 

       <div class="col-md-6"> 
        <form class="form"> 
        <div class="form-group"> 
         <textarea class="form-control" placeholder="" required="required" name="message"></textarea> 
        </div> 
        </form> 
        <input class="btn btn-success btn-block" type="submit" value=""></input> 
       </div> 

       </form> 
      </div> 

      <div class="col-md-4 apply_image"> 
       <a><img src="images/icon.png" alt=""></a> 
      </div> 

      </div> 
     </div> 

     </div> 

    </section> 

JQuery와 스크립트 :

$('#apply_section .apply_image a').click(function(){ 
    if($('#apply_section .apply_form').css('display','none')) { 
    $('#apply_section .apply_form').css('display','inline-block'); 
    }else {$('#apply_section .apply_form').css('display','none');} 
}); 

문제는 그 것이다 양식 이미지를 클릭하면 클릭 방법은, 한 시간 동안 주문을 받아 것입니다 나타나지만 그 후에 다시 숨기고 이미지를 클릭해도 작동하지 않으면!

+0

대신'의 경우 ($ ('#의 apply_section의 .apply_form') CSS ('디스플레이', '없음').)'('display ') =='없음 ')'... 이것을하기위한 더 좋은 방법은 jquery'.toggle()'함수를 사용하는 것입니다. –

+0

... 또는 클래스를 만들고 [.toggleClass()] (http://api.jquery.com/toggleclass/)를 사용하십시오. – gaetanoM

+0

감사합니다. @kartikeya Khosta, 그것이 효과가있었습니다. 어리석은 실수 : D –

답변

2

그렇다면 CSS 속성을 확인하는 방법이 아닙니다. jQuery를 토글 문서에 따르면

$('#apply_section .apply_image a').click(function() { 
    var boolean = $('#apply_section .apply_form').css('display') == 'none'; 
     $('#apply_section .apply_form').toggle(boolean) 
}); 

:

$('#apply_section .apply_image a').click(function() { 
    if ($('#apply_section .apply_form').css('display') == 'none') { // Here, check if display value is 'none' 
    $('#apply_section .apply_form').css('display', 'inline-block'); 
    } else { 
    $('#apply_section .apply_form').css('display', 'none'); 
    } 
}); 
+0

그런 실수를하게 된 것은 얼마나 유감 스럽습니까! : D Thaks @ Oen44 그것이해야하는대로 일했습니다. –

+0

다행입니다. 내 대답을 받아들이는 것을 잊지 마라.) – Oen44

1

또 다른 방법은 사용 토글 그런 일을 할 수 The matched elements will be revealed or hidden immediately, with no animation, by changing the CSS display property. If the element is initially displayed, it will be hidden; if hidden, it will be shown. The display property is saved and restored as needed. If an element has a display value of inline, then is hidden and shown, it will once again be displayed inline.

+0

OP가'inline-block'을 사용할 때'toggle'은'display : block'을 리턴합니다. – Oen44

+0

@ Oen44 - 주요 목적은 요소를 숨기거나 표시하는 것이 었습니다. 그렇지 않니? – funcoding

+0

그러나 페이지보기에 영향을 줄 수있는'block'과'inline-block' 디스플레이에는 차이가 있습니다. – Oen44

-1

더 좋은 방법은 클래스에 토글을 사용하고 있습니다 :

CSS

.hide { 
    display:none; 
} 

jQuery를

$('#apply_section .apply_image a').click(function(){ 
     $('#apply_section .apply_form').toggleClass('hide'); 
}); 
+0

'css'태그가 포함되어 있지 않으며 OP가 CSS 사용에 대해 말하지 않았으므로 OP 질문과 관련없는 답변을 게시하지 마십시오. – Oen44

-1

간단하게 코드를 사용하여 토글() :

$('#apply_section .apply_image a').click(function(){ 
    $('#apply_section .apply_form').toggle(); 
}); 
관련 문제