jQuery

26.09.2013

jQuery - очень хорошая библиотека JavaScript, облегчающая работу. Я, как программист PHP не работаю с js часто, но тем не менее, иногда приходится. Поэтому здесь я выложу некоторые фрагменты на jQuery, чтобы использовать их вновь. А вот хороший сайт по JQuery

События

Чтобы навешать какое либо событие, очень удобно использовать метод on:


$(selector).on(events, [selector], [data], handler);
//Пример
$('a.class-a').on('click', function(){
     var href = $(this).attr('href');//$(this) - здесь это объект, с которы произошло событие
     alert('Переходим на '+href);
     return false; //Так можно отменить стандартное действие, в данном случае переход по ссылке
});
//Если объекты в DOM подгружаются после загрузки страницы, то на них навешать события можно так:
$('.content').on('click','a.class-a', function(){ //объект .content должен быть сразу на странице, при навешивании события
                                                // а объект a.class-a может появится в любой момент
     var href = $(this).attr('href');
     alert('Переходим на '+href);
});

Возможные события: blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error

Выбор объектов в DOM

Выбор объекта по селектору, получение свойств

Можно обратится к объекту в DOM, используя различные фильтры по селекторам. Список возможных селекторов и фильтров. Приведу пример как вернуть название всех отмеченных чекбоксов на странице:


$('input[type=checkbox]:checked').each(function(){ //each - 
        //осуществление перебора найденных объектов
    alert($(this).attr('name'));
});

В следующем примере выведу название всех чекбоксов и их статусов на странице:


$('input[type=checkbox]').each(function(){    
    alert($(this).attr('name')+'='+$(this).is(':checked'));//.is - 
          //проверяет объект на соответствие селектору
});

Перемещения по дереву DOM

Вот ссылка на хорошее описание всех функций с примерами. Ниже приведу список части функций, которые мне приходилось использовать, с кратким описанием:

.children() Находит все дочерние элементы у выбранных элементов, согласно селектору.
.closest() Находит ближайший, соответствующий заданному селектору элемент, из числа следующих: сам выбранный элемент, его родитель, его прародитель, и так далее, до начало дерева DOM.
.find() Находит элементы по заданному селектору, внутри выбранных элементов.
.next() Находит элементы, которые лежат непосредственно после каждого из выбранных элементов.
.parent() Находит родительские элементы у всех выбранных элементов.
.parents() Находит всех предков у выбранных элементов, т.е. не только прямых родителей, но и прародителей, прапрародителей и так далее, до начало дерева DOM.
.prev() Находит элементы, которые лежат непосредственно перед каждым из выбранных элементов.
.siblings() Находит все соседние элементы (под соседними понимаются элементы с общим родителем).

Эффекты

Эффектами я пользуюсь вообще не часто, но иногда приходится. Описание функций, для задание эффектов и работы с очередью выполнения. Покажу основные возможности на примере:


$('a.class-a').hide(); //скрыть объект
$('a.class-a').show(); //показать объект
//hide и show могут принимать набор параметров для плавного показа/скрытия
$('a.class-a').hide(1000); //простой вариант - скрыть за 1000 миллисекунд
//Анимация
$("div").animate({ 
        width: "100px",     //меняем css параметры    
        fontSize: "30px", 
        borderWidth: "3px"   
      }, 1500);       //в течении 1500 секунд 

Очередь анимации

Во всяких слайдерах, где происходит анимация нужно очищать очередь анимации, чтобы если пользователь кликнул 2 раза, анимация не затянулась на два раза, для этого я использую функцию .stop, но есть и другие, ссылку на них я приводил выше. Пример:


$('a.class-a').on('click', function(){ 
    $("div.example").stop(true,true); //первый параметр означает - остановить всю очередь
                                      //второй, перейти в конец текущей анимации
    $("div.example").animate({ 
        left: "+=100",  
    }, 2000); 
    return false;                                        
});

HTML:


<a href="#" class="class-a">сдвинуть на 100px >>>>>>>>>></a>
<div style="overflow: hidden; position: relative; border: 3px solid #7CAFF4; height: 50px;">
    <div style="height:50px; width:100px; position:absolute; background-color: #7CAFF4;" class="example">
    </div>
</div>

Ниже приведен результат примера, сколько бы раз подряд не нажимали на ссылку, анимация будет проходить всегда 2 секунды, не будет забиваться очередь.

сдвинуть на 100px >>>>>>>>>>

Ajax

Для реализация аякса, я использую метод .post:


$.post("/ajax.php", //Отправляем пост запрос по адресу /ajax.php
        {       //передаем объект - параметры POST запроса
		param1: "param1", 
		param2: param2
	}, function(data){ //Функция обработки результата
		data = JSON.parse(data); //Если вернули данные в
                        // формате JSON - преобразуем их в объект
		alert(data.res);//производим манипуляции с данными
	});

Манипуляции с объектами DOM

jQuery позволяет очень удобно манипулировать элементами на странице, можно без труда: менять атрибуты элементов, работать со стилями, добавлять новые элементы до, после, вместо существующих, получать содержимое элементов и их атрибутов. Функций достаточно много, и пользоваться мне приходилось всеми, в зависимости от задачи, поэтому я не могу выделить какой либо краткий список, а приводить все нет смысла. Поэтому даю ссылку: Манипуляции с объектами DOM

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

Представьтесь пожалуйста:
Электронная почта:
Электронный адрес не публикуются
Текст сообщения:
Для подсветки кода, оборачивайте ваш код в теги <code></code>
Введите 5 цифр с картинки:

Рекомендую:

Поделюсь промокодами для хостинга TimeWeb!

Поддержать проект: