Lấy một đối tượng JQuery trống


120

Trong đoạn mã sau, tôi thiết lập một trình xử lý thay đổi trên một 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.

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

Để kiểm tra xem tôi có cần ẩn thông báo thêm hay 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 trước đó có rỗng hay kích thước là 0 hay không.

Sẽ rất tuyệt nếu khởi tạo Before thành một đối tượng JQuery trống để không phải kiểm tra thêm giá trị null.

Việc thực hiện $ () trả về một đối tượng có kích thước là 1.

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

// Init hàm.
$ (function () {
// Giữ đối tượng đã chọn trước đó để chọn loại tài khoản.

var trước = null; // Đây là nơi tôi muốn khởi tạo.
                      // một cái gì đó giống như trước = $ ();


$ ("SELECT [name = 'AccountType']"). Change (
    chức năng () {
        // Ẩn tin nhắn trước nếu có.
        if (Trước đó == null || Trước đó.size ()> 0) { 
            Trước.hide ();
        }

        // Hiển thị thông báo nếu tìm thấy và lưu nó như trước.
        Trước = $ ("#" + this.value + "_ Msg"). Show ();

        // Nhận câu hỏi câu cá
        var FirstQuestion = $ (". FirstQuestion");
        if (this.value === '') {
            FirstQuestion.hide ();
        } khác {
            // Hiển thị FirstQuestion theo cách thủ công.
            FirstQuestion.show ();
        }
    });
}

Trong trường hợp xấu nhất, tôi có thể làm điều gì đó như sau:

    var trước = {size: function () {return 0; }};

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

Câu trả lời:


222

Điều này tạo ra một jQuery-object rỗ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:

$()

cảm ơn. Vì vậy, cái nào là tốt hơn để giữ khả năng tương thích với các phiên bản trước và sau đó? - Dù sao, tôi vẫn không thể tìm ra lý do tại sao không có tác dụng trong trường hợp của tôi. Có lẽ tôi nên mở một câu hỏi về nó, nhưng tôi đã giải quyết nó bằng cách sử dụng PHP thay vì jQuery nên tôi thực sự không thể tìm hiểu sâu hơn về nó ngay bây giờ.
cregox

2
kiểm tra tốt: $ (). add ($ ("div")). css ('color', 'red');
zloctb

24
$();

Trả lại một bộ trống

Kể từ jQuery 1.4, việc gọi jQuery()phương thức không có đối số sẽ trả về một tập hợp jQuery trống (với .lengththuộc tính là 0). 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


6
Cung cấp liên kết ( api.jquery.com/jQuery/#jQuery1 ) để sao lưu bản sao kê của bạn có thể sẽ giúp bạn có thêm nhiều thông tin hơn :).
studgeek

1
Đã ủng hộ cho nguồn bao gồm. Luôn luôn tuyệt vời khi có sẵn tất cả các bối cảnh. Một liên kết trực tiếp hơn đến đoạn liên quan sẽ là: api.jquery.com/jQuery/#returning-empty-set
ksadowski Ngày

3

Lời khuyên của tôi là đừng làm theo cách đó. Có rất nhiều cách dễ dàng hơn để làm điều nà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();
  });
});

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

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

-1

thử cái này

 var new = $([]);

Tôi không phải là một lập trình viên giỏi nhưng nó cung cấp cho bạn một đối tượng rỗng :))


Bạn đang nhận được phiếu phản đối vì bạn đã lặp lại một câu trả lời hiện có (và rất cũ). Điều đó không thêm bất kỳ giá trị nào cho cộng đồng.
isherwood
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.