Boş bir JQuery nesnesi alma


120

Aşağıdaki kodda, seçimin değerine bağlı olarak bazı takip sorularını göstermek ve gizlemek için bir seçim kutusunda bir değişiklik işleyicisi kuruyorum.

Ayrıca, seçimin bazı değerleri için görüntülenen fazladan bir mesaj vardır.

Fazladan mesajı gizlemem gerekip gerekmediğini kontrol etmek için Önceki adlı bir değişken tutuyorum. İşleyicinin yürütülmesi üzerine, Önceki null olup olmadığını veya boyutun 0 olup olmadığını kontrol ederim.

Boşluk için fazladan kontrol yapmak zorunda kalmamak için Önceki'yi boş bir JQuery nesnesine başlatmak güzel olurdu.

$ () Yapmak 1 büyüklüğünde bir nesne döndürür.

Boş bir Jquery nesnesi oluşturmanın bir yolu var mı?

// Başlatma işlevi.
() {(Function, $
// Hesap türü seçimi için önceden seçilen nesneyi tutun.

var Önceki = null; // İşte başlatmak istediğim yer burası.
                      // Önceki gibi bir şey = $ ();


$ ( "[Name = 'AccountType'] SEÇ"). Değişikliğini (
    function () {
        // Varsa Önceki mesajı gizle.
        eğer (Önceki == null || Önceki.size ()> 0) { 
            Previous.hide ();
        }

        // Bulunursa mesajı gösterin ve önceki gibi kaydedin.
        Önceki = $ ("#" + this.value + "_ Msg"). Show ();

        // İlk soruyu alın
        var FirstQuestion = $ (". FirstQuestion");
        eğer (this.value === '') {
            FirstQuestion.hide ();
        }Başka{
            // FirstQuestion'u manuel olarak gösterin.
            FirstQuestion.show ();
        }
    });
}

En kötü durumda, şöyle bir şey yapabilirim:

    var Önceki = {boyut: işlev () {dönüş 0; }};

ama bu aşırılık gibi görünüyor.

Yanıtlar:


222

Bu boş bir jQuery nesnesi oluşturur:

$([])

Güncelleme: jQuery'nin (1.4+) daha yeni sürümlerinde şunları kullanabilirsiniz:

$()

Teşekkürler. Peki önceki ve sonraki sürümlerle uyumluluğu korumak için hangisi daha iyidir? - Her neyse, neden benim durumumda işe yaramadığını hala anlayamıyorum . Belki bununla ilgili bir soru açmalıyım, ancak jQuery yerine PHP kullanarak çözdüm, bu yüzden şu anda daha fazla bilgi alamıyorum.
cregox

2
iyi test: $ (). ekle ($ ("div")). css ('renk', 'kırmızı');
zloctb

24
$();

Boş Bir Seti İade Etme

JQuery 1.4'ten itibaren, jQuery()yöntemin bağımsız değişken olmadan çağrılması boş bir jQuery kümesi döndürür .length(0 özelliği ile). JQuery'nin önceki sürümlerinde bu, belge düğümünü içeren bir küme döndürürdü.

Kaynak: api.jquery.com


6
İfadenizi desteklemek için bağlantı ( api.jquery.com/jQuery/#jQuery1 ) sağlamak muhtemelen size daha fazla bilgi kazandıracaktır :).
studgeek

1
Dahil edilen kaynak için olumlu oy verildi. Tüm içeriğe sahip olmak her zaman harikadır. İlgili paragrafa daha doğrudan bir bağlantı şu şekilde olacaktır: api.jquery.com/jQuery/#returning-empty-set
ksadowski

3

Benim tavsiyem, bunu bu şekilde yapma. Bunu yapmanın çok daha kolay yolları var. Düşünmek:

<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();
  });
});

Çok daha kolay. Temel olarak, neyin gösterileceğini ve gizleneceğini belirtmek için sınıflar verin ve daha sonra izleme gerekmez. Bir alternatif şudur:

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

-1

bunu dene

 var new = $([]);

İyi bir programcı değilim ama size boş bir nesne veriyor :))


Mevcut (ve çok eski) bir cevabı tekrarladığınız için olumsuz oy alıyorsunuz. Bu, topluluğa herhangi bir değer katmaz.
isherwood
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.