690
 

Как создать свой CSS селектор в MooTools

В библиотеке Mootools уже реализованы большинство псевдоселекторов CSS3: :nth-child, :contains, :not и др. Но у вас есть возможность не ограничиваться имеющимся выбором и создать свой собственный CSS селектор, который можно будет использовать в таких функциях Mootools, как $$ и getElement. Все, что нужно будет сделать, это добавить свою функцию к объекту Selectors.Pseudo. В функцию будут передаваться два аргумента – параметр, передаваемый селктору (:pseudo(parameter)) и объект, который может быть использован в качестве временного хранилища данных при последовательном проходе элементов. Последний аргумент используется к примеру в псевдоселекторе :nth-child. Функция должна возвращать true если элемент соответствует критериям выбора или false в обратном случае.

В качестве примера можно продемонстрировать псевдокласс :random, созданный Яном Кассенсом:

Selectors.Pseudo.random = function(probability, local){
	return Math.random() < (probability || .5).toFloat();
};

// выбор примерно половины div-ов на странице
$$('div:random');

// выборка 20% заголовков h2 с классом article
$$('h2.article:random(.2)');

Такой псевдоселектор позволяет выбирать случайные элементы из DOM. В первом примере будут выбраны примерно половина элементов div на странице, а во втором будет произведена выборка всех загловков h2 с классом article, а затем в случайном порядке будут выбраны 20% из их общего числа.

Еще один пример реализации псевдоселектора я подсмотрел на блоге у Девида Уолша:

Selectors.Pseudo.selected = function(){
	return (this.selected && this.get('tag') == 'option');
};

Это селектор :selected, который имеется в jQuery. Суть его заключается в том, что он выбирает выбранные элементы option из списка select:

<select name="mysel" id="mysel" multiple="multiple">
	<option value="One">One</a>
	<option value="Two">Two</a>
	<option value="Three" selected="selected">Three</a>
	<option value="Four" selected="selected">Four</a>
</select>

Удобная это вещь - псевдоселектор, не правда ли? Тем более если его можно легко создавать самому, под свои нужды.

Добавить в закладки:
Maklay.com - Большой каталог товаров для спорта и активного отдыха

Оставить комментарий

JSToolbox создан на основе WordPress