Отримання порожнього об'єкта JQuery


120

У наступному коді я встановив обробник змін у вікні вибору, щоб показати та приховати деякі подальші запитання, виходячи зі значення вибору.

Далі, для деяких значень вибору є додаткове повідомлення, яке відображається.

Для того, щоб перевірити, чи потрібно приховувати зайве повідомлення, я зберігаю змінну під назвою "Попередня". Після виконання обробника я перевіряю, чи попередній недійсний чи розмір - 0.

Було б добре ініціалізувати «Попередній» до порожнього об’єкта JQuery, щоб не довелося робити додаткову перевірку на null.

Виконання $ () повертає об'єкт розміром 1.

Чи є спосіб створити порожній об’єкт Jquery?

// Функція init.
$ (функція () {
// Утримуйте раніше вибраний об'єкт для вибору типу облікового запису.

var попередній = null; // Ось де я хотів би ініціалізувати.
                      // щось на кшталт Previous = $ ();


$ ("SELECT [name = 'AccountType']") зміни (
    function () {
        // Сховати попереднє повідомлення, якщо воно було.
        if (Previous == null || Previous.size ()> 0) { 
            Previous.hide ();
        }

        // Покажіть повідомлення, якщо воно знайдено, і збережіть його як попереднє.
        Попередній = $ ("#" + this.value + "_ Msg"). Show ();

        // Отримати питання про фірт
        var FirstQuestion = $ (". FirstQuestion");
        if (this.value === '') {
            FirstQuestion.hide ();
        } else {
            // Вручну покажіть FirstQuestion.
            FirstQuestion.show ();
        }
    });
}

У гіршому випадку я міг би зробити щось подібне:

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

але це здається непосильним.

Відповіді:


222

Це створює порожній jQuery-об'єкт:

$([])

Оновлення: у новіших версіях jQuery (1.4+) ви можете використовувати:

$()

Дякую. Отже, з якими краще зберігати сумісність з попередніми та подальшими версіями? - У всякому разі, я досі не можу зрозуміти, чому ні в моєму випадку не працювало. Можливо, я повинен відкрити питання про це, але я вирішив це за допомогою PHP замість jQuery, тому я зараз не можу більше розкопатися на ньому.
Крегокс

2
тонкий тест: $ (). add ($ ("div")). css ('color', 'red');
zloctb

24
$();

Повернення порожнього набору

Станом на jQuery 1.4, виклик jQuery()методу без аргументів повертає порожній набір jQuery (з .lengthвластивістю 0). У попередніх версіях jQuery це повертало б набір, що містить вузол документа.

Джерело: api.jquery.com


6
Надання посилання ( api.jquery.com/jQuery/#jQuery1 ) для підтвердження вашої заяви, ймовірно, отримає більше ефектів :).
studgeek

1
Запрошено для включеного джерела. Завжди здорово мати весь контекст. Більш прямим посиланням на відповідний параграф буде: api.jquery.com/jQuery/#returning-empty-set
ksadowski

3

Моя порада - не робіть цього так. Є набагато простіші способи зробити це. Поміркуйте:

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

Набагато простіше. В основному дайте заняття, щоб вказати, що показувати та ховати, і тоді відстеження не потрібно. Альтернатива:

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

-1

спробуйте це

 var new = $([]);

Я не хороший програміст, але це дає вам порожній об’єкт :))


Ви отримуєте голоси, оскільки ви повторили існуючу (і дуже стару) відповідь. Це не додає ніякої цінності для громади.
Ізервуд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.