jqGetVersion – систематизируем данные об версии jQuery
Вам приходилось когда нибудь в своих скриптах/плагинах проверять версию библиотеки jQuery?
Было удобно? Наверно нет
Немного сведений. Версия библиотеки jQuery хранится в jQuery.fn.jquery:
И хранится она в виде строки ![]()
А это значит, что проверка на нужную версию становится не очень удобной
Что же, у нас как всегда есть выход! ![]()
Достаточно нам всего лишь разложить строковой вариант версии на Major и Minor версии, а также узнать path-level и extra identifier
Наверно непонятно, что предыдущее предложение означает? Давайте разберём на примере!
Представим, что у нашей jQuery версия 1.3.2pre2. Тогда:
Minor version = 3
Path-level = 2
Extra identifier = pre2
Всё просто! Теперь осталось написать сниппет, который это всё будет высчитывать и превращать в числа.
Для изъятия цифорок будем использовать вот такое регулярное выражение:
alert( '1.3.2pre2'.match( expr ) );
Ага! Строка 1.3.2pre2 разложилась правильно
И одно единственное последнее – нам осталось написать полноценный сниппет из полученных нами знаний
Копирайт в начале скрипта написал от души ![]()
Итак, наш сниппет преобразует jQuery.fn.jquery из простой строки в объект-строку и добавляет к нему свойства major, minor, pathlevel, identifier:
** jqGetVersion
** ---
** VERSION 0.0.1
** ---
** Сниппет для библиотеки jQuery.
** Создаёт в jQuery.fn.jquery расширенные данные об версии библиотеки
** Версии: major, minor pathlevel, identifier
** ---
** @example:
** для jQuery 1.4: jQuery.fn.jquery = { major:1, minor:4, pathlevel:0 };
** для jQuery 1.4a2pre: jQuery.fn.jquery = { major:1, minor:4, pathlevel:0, identifier:'a2pre' };
** для jQuery 1.3.2: jQuery.fn.jquery = { major:1, minor:3, pathlevel:2 };
** ---
** @idea_from: Regent(http://vl.vg/22.01.2010/jq-get-version/)
** ---
** @author: Александр Кузнецов aka Regent(http://vl.vg/)
** ---
** @demo: http://vl.vg/wp-content/uploads/js/jqGetVersion/0.0.1/example.html
** ---
** @home_page: http://plugins.jquery.com/project/jq-get-version
** ---
** Dual licensed under the MIT and GPL licenses.
** - http://www.opensource.org/licenses/mit-license.php
** - http://www.gnu.org/copyleft/gpl.html
*/
if( window.jQuery ) jQuery.fn.jquery = (
function(){
var
j = new String( jQuery.fn.jquery ),
match = j.match( /^([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+))?)?([a-z0-9_-]+)?$/ );
j.major = parseInt( match[ 1 ] );
j.minor = parseInt( match[ 2 ] ) || 0;
j.pathlevel = parseInt( match[ 3 ] ) || 0;
j.identifier = match[ 4 ];
return j;
}
)();
И как всегда, вот минимизированная версия:
** Создаёт в jQuery.fn.jquery расширенные данные об версии библиотеки
** More -> http://vl.vg/22.01.2010/jq-get-version/
*/
if(window.jQuery){jQuery.fn.jquery=(function(){var b=new String(jQuery.fn.jquery),a=b.match(/^([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+))?)?([a-z0-9_-]+)?$/);b.major=parseInt(a[1]);b.minor=parseInt(a[2])||0;b.pathlevel=parseInt(a[3])||0;b.identifier=a[4];return b})()};
Это же минимизированная версия сниппета, поэтому копирайтов уменьшил
Как использовать сниппет после внедрения в страницу? Ну например вот так:
alert( 'Вы используете версию jQuery, в которой обновлён метод index ;)' );
Либо скачать новый нормальный браузер