2013-05-24 31 views
9

Tôi có một câu hỏi thực sự nhanh chóng nên là một câu trả lời dễ dàng.Đặt div để hiển thị: none; sử dụng javascript hoặc jQuery

Tôi có trình đơn điều hướng trên thiết bị di động sử dụng các cấp menu của trình đơn thả xuống của jQuery. Mỗi khi một cấp được tải, jQuery xác định chiều cao của trình đơn và đặt nó theo đó.

Tôi đang sử dụng đoạn mã sau vào một nút để bật tắt hiển thị và ẩn các menu chính dựa trên trang hiện tại:

<script type="text/javascript"> 
    (function ($) { 
     $("a.BNnavTrigger").click(function (event) { 
      event.preventDefault(); 
      $("div.drill-down-wrapper").slideToggle("9000"); 
     }); 
    })(jQuery);  
</script> 

Để cho menu để bắt đầu "khép kín" trên các trang nhất định, tôi biết tôi phải cung cấp giá trị css là display:none; cho div chứa. Điều này là tất cả làm việc tốt với một vấn đề nhỏ.

Khi tôi ẩn trình đơn lúc đầu, trình đơn trình đơn thả xuống jQuery phát hiện thấy nó bị ẩn và đặt chiều cao trình đơn thành 0px. Khi tôi chuyển đổi menu trên trang đã ẩn menu ban đầu, tất cả các nội dung khác trong ngăn bật đều chính xác, nhưng chính trình đơn bị kẹt ở độ cao 0.

Trong não, câu trả lời rõ ràng cho vấn đề này là che giấu menu chứa div, qua javascript, sau khi menu đã được tải và thiết lập chiều cao. Điều này có đúng không?

Có ai có thể cung cấp cho tôi một tập lệnh nhỏ để thực hiện việc này không? Tôi là một noob hoàn toàn và hoàn toàn với js. Có ai khác có đề xuất khác về cách xử lý vấn đề này không?

Cảm ơn bạn đã dành thời gian! Alex

CẬP NHẬT!

JS fiddle cho vấn đề ở đây:http://jsfiddle.net/fyyG2/17/ *

+0

Bạn có thể đính kèm tập tin html không? – Edward

+0

Đây là tất cả rất tốt đẹp, nhưng bạn không nên cho chúng tôi thấy cách bạn đang tải trình đơn này và thiết lập chiều cao của nó, nếu chúng ta có nghĩa vụ để có thể giúp bạn với phần đó? – adeneo

+0

@Edward - Tôi đã thêm html tôi đang sử dụng cho menu –

Trả lời

10

On tài liệu sẵn sàng làm $("#yourId").hide();.

Ví dụ:

$(document).ready(function() { 

    $("div.drill-down-wrapper").hide(); 
    var $drillDown = $("#drilldown"); 

     // (what ever your code is) 
}); 
+0

Bạn có thể chỉ cho tôi ý nghĩa của điều này trong jsFiddle của tôi không? Thanks .. Tôi khá noob tại js/jquery –

+0

$ (tài liệu) .ready (function() { $ ("div.drill-down-wrapper"). Hide(); \t \t var $ drillDown = $ ("#drilldown"); ........ (mã của bạn là gì) }); – Ani

+0

Hoàn hảo. Tải trình đơn, sau đó ẩn. Chuyển đổi lại chương trình. Cảm ơn bạn. –

13

Hãy thử cách này:

$("#yourId").css("display","none"); 

nó nên làm việc đó!

Tôi hy vọng điều đó sẽ hữu ích.

+0

Cảm ơn mẹo này kiko-lp. Thật không may, ngay cả khi tôi ẩn menu thông qua JS sau khi tải trang, trình đơn vẫn phát hiện nó bị ẩn và tự cung cấp giá trị độ cao bằng 0. Tôi không biết bất kỳ cách nào để trì hoãn tập lệnh này để chiều cao trình đơn sẽ được đặt Đầu tiên. –

+0

Tôi đã tạo ra một jsFiddle cho vấn đề này. Kiểm tra nó ra! http://jsfiddle.net/fyyG2/17/ –

2

Thêm hiển thị giá trị css: không có tệp css nào hoạt động tốt. http://jsfiddle.net/dxkX6/4/

nhưng tôi có thể thấy rằng bạn có một lỗi đánh máy trong file html của bạn:

$("a.BNnavTrigger").click(function (event) { 
    ^

<a class="BNavTrigger">Toggle Menu</a> 
     ^

là có thể là lý do tại sao bạn đang gặp vấn đề?

+0

Lỗi typo là trong việc chuyển giao html cho trang này, nhưng bên phải của bạn, nó hoạt động tốt. Vấn đề là jquery được sử dụng bởi các plugin đã mua yêu cầu chính nó để được nhìn thấy ban đầu để cho nó tính toán chính xác chiều cao của nó. –

+0

Tôi đã tạo ra một jsFiddle cho vấn đề này. Kiểm tra nó ra! http://jsfiddle.net/fyyG2/17/ –

1

Tôi không chắc rằng tôi hoàn toàn hiểu vấn đề của bạn, nhưng đây là một ý nghĩ:

Đặt opacity của những gì bạn muốn ẩn để 0, thay vì thay đổi đó là kích thước/giấu nó.Bằng cách này, nó sẽ giữ cho kích thước của nó nhưng sẽ không được nhìn thấy cho người sử dụng:

$('#id').css('opacity',0); 

Và để lại cho thấy yếu tố:

$('#id').css('opacity',1); 
+0

Cảm ơn ý nghĩ của Israel.Tôi đang cố gắng chuyển đổi menu bằng cách sử dụng slideToggle để tôi có thể ẩn menu trên trình duyệt di động. Có nghĩa là tôi cũng cần kích thước chiều cao để thay đổi với nút gạt. Tôi đã tạo ra một jsFiddle để hiển thị những gì tôi đang nói về ở đây: Tôi đã tạo ra một jsFiddle cho vấn đề này. Kiểm tra nó ra! http://jsfiddle.net/fyyG2/17/ –

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