Необходимо проверить, является ли некий набор элементов массивом, и, если нет, преобразовать его в массив.

Опубликовал: Четверг, Июнь 6, 2013 в категории jQuery, Подборка рецептов | Пока нет комментариев

Решение

Для решения задачи подойдут вспомогательные функции $.isArray(obj) и

$.makeArray(obj) (листинг 10.1.8).

Листинг 10.1.8. Использование вспомогательных функций $.isArray()

и $.makeArray()

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<title>example-10-1-8</title>
<content>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery-1.5.2.min.js" type="text/javascript"></script>
<style type="text/css"> div {
width:100px; height:20px; margin:10px; padding:5px; color:#fff; background-color:#00f;
}
</style>
<script type="text/javascript">
$(function () {
$("button:first").click(function(){
$.isArray($("div")) ? alert("Это массив!") : alert("Это НЕ массив!");
});
$("button:last").click(function(){ var arr = $.makeArray($("div"));
$.isArray(arr) ? alert("Это массив!") : alert("Это НЕ массив!");
});
});
</script>
</head>
<body>
Первый
Второй
Третий
Четвертый
<button>.isArray()</button>
<button>.makeArray()</button>
</body>
</html>

Обсуждение

Прежде чем начать обсуждение, необходимо заметить, что некоторые методы JavaScript, и в частности jQuery, возвращают объекты, подобные массивам. Такие объекты обладают некоторыми свойствами массива, но в действительности массивами не являются, поскольку в них отсутствуют отдельные методы, например pop() и reverse().

HTML-код, приведенный в листинге 10.1.8, — четыре элемента div, используемые в качестве "подопытных", и две кнопки button, при нажатии которых мы будем выполнять некоторые действия.

Смотрим JavaScript-код. При нажатии на кнопку .isArray() передаем набор элементов div вспомогательной функции $isArray(). Если переданный ей аргумент является массивом — получим соответствующее сообщение. Но поскольку набор элементов массивом не является, мы получаем сообщение "Это НЕ массив!". Нажима-

ем кнопку .makeArray(). При ее нажатии передаем набор элементов div вспомогательной функции $.makeArray(), которая преобразует набор в полноценный массив. Сохраняем его в переменной arr и передаем на проверку в $.isArray(). Получаем сообщение "Это массив!".

Необходимо отметить, что полученный полноценный теперь массив состоит из элементов DOM.

Источник: Самков Г. А. jQuery. Сборник рецептов. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2011. — 416 с.: ил. + CD-ROM — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>