2017-10-01 16 views
5

Vì vậy, Im học jQuery/JavaScript. Tôi tin rằng tiêu đề nói rằng tất cả cố gắng để có được một phần div được thiết lập để display: none hiển thị trong khi từ từ trượt xuống trên nút bấmHiển thị phần tử jQuery và trượt xuống trên nút bấm

Theo hướng dẫn jQuery, W3schools và vài nơi khác mà tôi đã cố gắng để đọc lên, điều này là những gì tôi nghĩ ra. Không cần phải nói nó trông không đẹp.

Logic của tôi ở đây là mã sẽ được thực thi khi nhấn nút nhấn, tôi đặt trình xử lý sự kiện onclick vào phần tử nút.

function showPackages(){ 
 
    $('#submitBtn').on('click', function(){ 
 
    $('#showPackages').slideDown('slow', function(){ 
 
     $('#showPackages').css('display', 'inline'); 
 
    }); 
 
    }); 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<div class="panel-group" id="dispPackages" style="display: none"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse1"> 
 
     Collapsible Group 1</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse1" class="panel-collapse collapse in"> 
 
     <div class="panel-body"> 
 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
 
     commodo consequat. 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse2"> 
 
     Collapsible Group 2</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse2" class="panel-collapse collapse"> 
 
     <div class="panel-body"> 
 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
 
     commodo consequat. 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

Bất kỳ sự giúp đỡ/lời khuyên đánh giá cao.

+1

Tháo chức năng, xử lý onclick và chỉ sử dụng các mã bên trong hàm trong một tài liệu đã sẵn sàng chức năng –

Trả lời

3

Trước hết, bạn phải phân tách sự kiện trình xử lý.

function showPackages(){ 
    $('#submitBtn').on('click', function(){ 
     $('#showPackages').slideDown('slow', function(){ 
     $('#showPackages').css('display', 'inline'); 
     }); 
    }); 
} 

Khi bạn ghi lại mỗi lần bạn nhấp vào đầu vào, nó đính kèm trình xử lý sự kiện nhấp vào submitBtn.

Thay đổi nó như thế này:

function showPackages(){ 

} 
$('#submitBtn').on('click', function(){ 

}); 
$('#showPackages').slideDown('slow', function(){ 
    $('#showPackages').css('display', 'inline'); 
}); 

Nhưng, nếu bạn muốn kích hoạt sự kiện tự động, sử dụng phương pháp .trigger().

function showPackages(){ 
    $('#submitBtn').trigger('click'); 
    $('#showPackages').trigger('slideDown'); 
} 
+0

ID của phần tử với 'display: none' cũng phải là' showPackages' thay vì 'dispPackages' mà tôi nghĩ, không chắc chắn rằng mặc dù –

+0

@Alexandru cảm ơn bạn đã trả lời. Vấn đề là css không thay đổi để hiển thị: inline bởi vì tôi vẫn không thể nhìn thấy nội dung div. DOM ném không có lỗi mặc dù –

+0

@NarenMurali Tôi đã thay đổi ID trên DIV thành 'showPackages' im làm việc với ví dụ thứ hai –

1

Hãy thử

chương trình này và ẩn có thể được thực hiện với hiệu ứng khác nhau

  • hide() và show()
  • fadeIn(), fadeOut() và fadeToggle ()
  • slideUp(), slideDown() và slideToggle()

* Trong trường hợp của bạn, bạn muốn trượt tác dụng vì vậy chỉ cần sử dụng slideToggle()

$('#submitBtn').on('click', function(){ 
 
//$('#dispPackages').slideToggle('slow') this will set display:block 
 
$('#dispPackages').slideToggle('slow').css("display","inline-block"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 

 

 
<button id="submitBtn">clickhere</button> 
 

 
<div class="panel-group" id="dispPackages" style="display: none"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse1"> 
 
     Collapsible Group 1</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse1" class="panel-collapse collapse in"> 
 
     <div class="panel-body"> 
 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
 
     commodo consequat. 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse2"> 
 
     Collapsible Group 2</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse2" class="panel-collapse collapse"> 
 
     <div class="panel-body"> 
 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
 
     commodo consequat. 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

chỉ là một câu hỏi nhanh về việc này, bạn thay đổi css để hiển thị với mã ở trên của bạn ở đâu ...? Chỉ tò mò –

+0

Tôi không hiểu bạn? bạn có nghĩa là làm thế nào tôi đang làm hiển thị/ẩn? – krishnar

+0

Có kể từ khi phong cách nội tuyến của div tiếp tục được đặt thành 'display: none' trong mã ở trên bạn đặt nó thành' display: inline' để hiển thị nội dung ...? –

Các vấn đề liên quan