developer blog

451 degrees Fahrenheit

Доллар function, $() в prototype

December 10th, 2007 by pilot |

В основном, это простая ссылка на document.getElementById(), но несколько более расширенная чем просто ссылка. Ниже показан пример использования:

[cc lang="php"]
node = $(’elementID’);

// То же самое
node = document.getElementById(’elementID’);

// Так же можно получать не только один елемент
// В этом случае результат будет массивом DOM елементов
nodes = $(’firstDiv’, ’secondDiv’);
[/cc]

Prototype так же предлагает функцию, ее нет в ядре JavaScript, которая возвращается массив DOM елементов и как аргумент она принимает имя css класса (class name):
[cc lang="php"]
nodes = document.getElementByClassName(’myclass’);
[/cc]

Однако, я думаю использовать ее вы будете редко, так как Prototype предлагает более расширенную функцию двойной доллар, $$(). Эта фунция возвращает массив DOM елементов основанных на CSS селекторе (css selector). Таким образом код показанный выше можно записать так:

[cc lang="php"]
nodes = $$(’.myclass’);
[/cc]

Благодаря мощьности CSS селекторов (css selectors) вы можете парсить модель DOM по классам (class), ID, и родитель-наследник (parent-child) и предыдущий-следующий (previous-next) связям, гораздо проще чем при использовании XPath выражений. Вы можете получить доступ к элементу через сложную комбинацию селекторов:

[cc lang="php"]
nodes = $$(’body div#main ul li.last img > span.legend’);
[/cc]

И последний пример улучшения синтаксиса предлагаемого Prototype — это each array iterator, подобно как в PHP:

[cc lang="php"]
var vegetables = ['Carrots', 'Lettuce', 'Garlic'];
vegetables.each(function(food) { alert(’I love ‘ + food); });
[/cc]

Не забывайте подписывать на рассылку.

Дальше будет еще много интересного.

top of hotblogs.org.ua

Раздел Ajax, Prototype, javascript

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.