2009-05-22 49 views
106

Trong mã sau, tôi thiết lập trình xử lý thay đổi trên hộp chọn để hiển thị và ẩn một số câu hỏi tiếp theo dựa trên giá trị của lựa chọn.Nhận đối tượng JQuery trống

Hơn nữa, đối với một số giá trị của lựa chọn, có thêm thông báo được hiển thị.

Để kiểm tra xem tôi có cần ẩn thông báo bổ sung không, tôi giữ một biến có tên là Trước. Khi thực thi trình xử lý, tôi kiểm tra xem liệu Trước đó có null hay không, hoặc kích thước là 0.

Sẽ tốt hơn nếu khởi tạo trước đối tượng JQuery trống để không phải thực hiện kiểm tra bổ sung cho null.

Làm một $() trả về một đối tượng với kích thước của 1.

Có cách nào để tạo ra một đối tượng Jquery trống rỗng?

 
//Init function. 
$(function(){ 
//Hold the previously selected object for the account type selection. 

var Previous = null; //Here is where I would like to initialize. 
         //something like Previous = $(); 


$("SELECT[name='AccountType']").change(
    function() { 
     //Hide Previous message if there was one. 
     if(Previous == null || Previous.size() > 0){ 
      Previous.hide(); 
     } 

     //Show the message if found and save it as previous. 
     Previous = $("#"+this.value+"_Msg").show(); 

     //Get fisrt question 
     var FirstQuestion = $(".FirstQuestion"); 
     if(this.value === ''){ 
      FirstQuestion.hide(); 
     }else{ 
      //Manually show FirstQuestion. 
      FirstQuestion.show(); 
     } 
    }); 
} 

Trong trường hợp tồi tệ nhất tôi có thể làm một cái gì đó như thế này:

 
    var Previous = { size : function() { return 0; } }; 

nhưng điều đó dường như quá mức cần thiết.

Trả lời

197

Điều này tạo ra một sản phẩm nào jQuery-đối tượng:

$([]) 

Cập nhật: Trong các phiên bản mới hơn của jQuery (1.4+), bạn có thể sử dụng:

$() 
+6

1 câu trả lời đáng yêu, tôi sẽ không bao giờ đã suy nghĩ về điều đó :) –

+0

tôi không thấy cách này là khác nhau từ '$()'. Ai có thể ném ánh sáng không? – cregox

+3

Như của jQuery 1.4, nó không phải là. Câu hỏi đã được hỏi trước đó tho. – Magnar

3

Lời khuyên của tôi là don' t làm theo cách đó. Có rất nhiều cách dễ dàng hơn để làm điều này. Hãy xem xét:

<select id="select" name="select"> 
    <option value="msg_1">Message 1</option> 
    <option value="msg_2">Message 1</option> 
    <option value="msg_3">Message 1</option> 
</select> 

<div class="msg_1 msg_3"> 
    ... 
</div> 

<div class="msg_1"> 
    ... 
</div> 

<div class="msg_2"> 
    ... 
</div> 

$(function() { 
    $("#select").change(function() { 
    var val = $(this).val(); 
    $("div." + val").show(); 
    $("div:not(." + val + ")").hide(); 
    }); 
}); 

Nhiều hơn dễ dàng hơn. Về cơ bản cung cấp cho các lớp học để cho biết những gì để hiển thị và ẩn và sau đó không có theo dõi yêu cầu. Một cách khác là:

$(function() { 
    $("#select").change(function() { 
    var val = $(this).val(); 
    $("div").each(function() { 
     if ($(this).hasClass(val)) { 
     $(this).show(); 
     } else { 
     $(this).hide(); 
     } 
    }); 
    }); 
}); 
19
$(); 

Việc trả lại Set Rỗng

Tính đến jQuery 1.4, cách gọi phương thức jQuery() không có đối số trả về một bộ jQuery rỗng (với một tài sản từ 0 .length). Trong các phiên bản trước của jQuery, điều này sẽ trả về một tập hợp chứa nút tài liệu.

Nguồn: api.jquery.com

+5

Cung cấp liên kết (http://api.jquery.com/jQuery/#jQuery1) để sao lưu câu lệnh của bạn có thể sẽ giúp bạn tăng thêm :). – studgeek

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