Ответ 1
Это создает пустой объект jQuery:
$([])
Update: В новых версиях jQuery (1.4+) вы можете использовать:
$()
В следующем коде я установил обработчик изменений в поле выбора, чтобы показать и скрыть некоторые последующие вопросы на основе значения выбора.
Далее, для некоторых значений выбора появляется дополнительное сообщение, которое отображается.
Чтобы проверить, нужно ли мне скрывать лишнее сообщение, я сохраняю переменную с именем 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; } };
но это кажется излишним.
Это создает пустой объект jQuery:
$([])
Update: В новых версиях jQuery (1.4+) вы можете использовать:
$()
$();
Возврат пустого набора
Как и в jQuery 1.4, вызов метода
jQuery()
без аргументов возвращает пустой набор jQuery (с свойством.length
0). В предыдущих версиях jQuery это возвращало бы набор, содержащий документ node.
Источник: api.jquery.com
Мой совет - не так. Есть намного более простые способы сделать это. Рассмотрим:
<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();
}
});
});
});