Получение пустого объекта JQuery

В следующем коде я установил обработчик изменений в поле выбора, чтобы показать и скрыть некоторые последующие вопросы на основе значения выбора.

Далее, для некоторых значений выбора появляется дополнительное сообщение, которое отображается.

Чтобы проверить, нужно ли мне скрывать лишнее сообщение, я сохраняю переменную с именем Previous. После выполнения обработчика я проверяю, имеет ли значение Previous значение null или размер равен 0.

Было бы неплохо инициализировать Previous до пустого объекта JQuery, чтобы не выполнять дополнительную проверку для null.

Выполнение $() возвращает объект размером 1.

Есть ли способ создать пустой объект JQuery?

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

В худшем случае я мог бы сделать что-то вроде этого:

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

но это кажется излишним.

Ответ 1

Это создает пустой объект jQuery:

$([])

Update: В новых версиях jQuery (1.4+) вы можете использовать:

$()

Ответ 2

$();

Возврат пустого набора

Как и в jQuery 1.4, вызов метода jQuery() без аргументов возвращает пустой набор jQuery (с свойством .length 0). В предыдущих версиях jQuery это возвращало бы набор, содержащий документ node.

Источник: api.jquery.com

Ответ 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();
      }
    });
  });
});