jQuery – это замечательный JavaScript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение – лучше всего начинать с наглядных примеров, и они далее…
Материалы данной статьи включены в учебник «jQuery для начинающих». Учебник распространяется бесплатно, и сопровождается интерактивными примерами.
Как же все-таки работает jQuery?
Ну для начала Вам понадобится сам фреймворк, его вы сможете скачать с домашней страницы проекта, затем проинициализировать:
1 2 3 | <head> <script type="text/javascript" src="jquery.js"></script> </head> |
А основные моменты Вам поможет понять следующая диаграмма:
Как получить элемент с помощью jQuery?
Для того чтобы понимать как работает селектор Вам все-же необходимы базовые знания CSS, т.к. именно от принципов CSS отталкивается селектор jQuery:
- $(“#header”) – получение элемента с id=”header”
- $(“h3”) – получить все <h3> элементы
- $(“div#content .photo”) – получить все элементы с классом =”photo” которые находятся в элементе div с id=”content”
- $(“ul li”) – получить все <li> элементы из списка <ul>
- $(“ul li:first”) – получить только первый элемент <li> из списка <ul>
Выдвижная панель
Начнем с простенького примера – слайд-панель, она у нас будет двигаться вверх/вниз по клику на ссылке (см. пример)
Реализуем это следующим образом, по клику на ссылку, у нас будет переключаться её класс (между “active” и “btn-slide”), а панелька с id=”panel” будет выдвигаться/прятаться. (класс “active” изменяет позицию фонового изображения, см. CSS файл во вложении).
1 2 3 4 5 6 | $(document).ready( function (){ $(".btn-slide").click( function (){ $(" #panel").slideToggle("slow"); $( this ).toggleClass("active"); }); }); |
Магические исчезновения
Этот пример покажет как можно красиво и легко убирать растворять элементы (см. пример):
Когда мы кликаем по картинке <img class=”delete”>, будет найден родительский элемент <div class=”pane”>, и его прозрачность будет медленно изменяться от opacity= 1.0 до opacity=hide:
1 2 3 4 5 6 7 | $(document).ready( function (){ $(".pane . delete ").click( function (){ $( this ).parents(".pane").animate({ opacity: "hide" }, "slow"); }); }); |
Связанная анимация
Теперь пример посложнее, но он поможет Вам лучше понять jQuery. Всего несколько строк кода заставят квадрат двигаться, изменять размер и прозрачность. (см. пример):
Line 0: когда прогрузилась страница (DOM готов к манипуляциям)
Line 1: привязываемся к событию click для элемента <a class=”run”>
Line 2: манипулируем элементом <div id=”box”> – уменьшаем его прозрачность до 0.1, наращиваем позицию left еще на 400px, со скоростью 1200 (milliseconds)
Line 3: затем медленно изменяем следующие параметры: opacity=0.4, top=160px, height=20, width=20; скорость анимации указывается вторым параметром : “slow”, “normal”, “fast” или в миллисекундах
Line 4: затем opacity=1, left=0, height=100, width=100, скорость – “slow”
Line 5: затем top=0, скорость – “fast”
Line 6: затем slideUp (с дефолтной скоростью анимации – “normal”)
Line 7: затем slideDown, скорость – “slow”
Line 8: возвращаем false для того чтобы браузер не перешел по ссылке
01 02 03 04 05 06 07 08 09 10 11 12 | $(document).ready( function (){ $(".run").click( function (){ $(" #box").animate({opacity: "0.1", left: "+=400"}, 1200) .animate({opacity: "0.4", top: "+=160", height: "20", width: "20"}, "slow") .animate({opacity: "1", left: "0", height: "100", width: "100"}, "slow") .animate({top: "0"}, "fast") .slideUp() .slideDown("slow") return false ; }); }); |
Гармошка #1
Пример реализации “гармошки”. (см. пример)
Теперь приступим к разбору полетов:
Первой строчкой мы добавляем класс “active” первому элементу <h3> внутри <div class=”accordion”> (класс”active” отвечает за позиционирования фонового рисунка – иконки со стрелочкой). Во второй строчке мы прячем все не первые <p> элементы внутри <div class=”accordion”>.
Когда происходит клик по заголовку <h3>, для следующего в нём элемента <p> будет применен эффект slideToggle, затем для всех остальных элементов <p> будет применен эффект slideUp. Следующие действие изменяет класс заголовка на “active”, затем ищем все остальные заголовки <h3> и убираем у них класс “active”
01 02 03 04 05 06 07 08 09 10 11 12 13 | $(document).ready( function (){ $(".accordion h3:first").addClass("active"); $(".accordion p:not(:first)").hide(); $(".accordion h3").click( function (){ $( this ).next("p").slideToggle("slow") .siblings("p:visible").slideUp("slow"); $( this ).toggleClass("active"); $( this ).siblings("h3").removeClass("active"); }); }); |
Гармошка #2
Этот пример схож с предыдущим, лишь отличается тем, что мы указываем открытую по умолчанию панельку. (см. пример)
В CSS у нас указано для всех элементов <p> display:none. Теперь нам необходимо открыть третью панель. Для этого мы можем написать следующее $(“.accordion2 p”).eq(2).show(), где eq обозначает равенство. Помните, что индексирование начинается с нуля:
01 02 03 04 05 06 07 08 09 10 11 12 13 | $(document).ready( function (){ $(".accordion2 h3").eq(2).addClass("active"); $(".accordion2 p").eq(2).show(); $(".accordion2 h3").click( function (){ $( this ).next("p").slideToggle("slow") .siblings("p:visible").slideUp("slow"); $( this ).toggleClass("active"); $( this ).siblings("h3").removeClass("active"); }); }); |
Анимация для события hover #1
Данный пример поможет создать Вам очень красивую анимацию для события hover (надеюсь, Вы знаете что это?), (см. пример):
Когда Вы наводите мышкой на элемент меню (mouseover), происходит поиск следующего элемента <em>, и анимируется его прозрачность и расположение:
1 2 3 4 5 6 7 | $(document).ready( function (){ $(".menu a").hover( function () { $( this ).next("em").animate({opacity: "show", top: "-75"}, "slow"); }, function () { $( this ).next("em").animate({opacity: "hide", top: "-85"}, "fast"); }); }); |
Анимация для события hover #2
Данный пример чуть-чуть посложней предыдущего примера: для формирования подсказки используется атрибут linktitle (см. пример)
Первым делом добавим тэг <em> в каждый элемент <a>. Когда произойдет событие mouseover, мы возьмем текст из атрибута “thetitle” и сохраним его в переменной “hoverText”, затем этот текст будет вставлен в тэг <em>:
01 02 03 04 05 06 07 08 09 10 11 12 13 | $(document).ready( function (){ $(".menu2 a").append("&lt;em&gt;&lt;/em&gt;"); $(".menu2 a").hover( function () { $( this ).find("em").animate({opacity: "show", top: "-75"}, "slow"); var hoverText = $( this ).attr("title"); $( this ).find("em").text(hoverText); }, function () { $( this ).find("em").animate({opacity: "hide", top: "-85"}, "fast"); }); }); |
Кликабельные блоки
Этот пример демонстрирует как сделать кликабельным блок с текстом, а не только ссылку (см. пример):
Создадим список <ul> с классом class=”pane-list” и мы хотим сделать элементы <li> кликабельными. Для начала привяжемся к событию click для элемента “.pane-list li”; когда пользователь будет кликать по элементу списка, наша функция произведет поиск тэга <a> и сделает редирект на страницу указанную в атрибуте href.
1 2 3 4 5 6 7 | $(document).ready( function (){ $(".pane-list li").click( function (){ window.location=$( this ).find("a").attr("href"); return false ; }); }); |
Складывающиеся панельки
Ну а теперь чуть-чуть скомбинируем предыдущие примеры и создадим ряд складывающихся панелек (наподобие как в Gmail организован inbox). (см. пример)
- скрываем все элементы <div class=”message_body”> после первого.
- скрываем все элементы <li> после пятого
- клик по <p class=”message_head”> – вызывает метод slideToggle для следующего элемента <div class=”message_body”>
- клик по <a class=”collpase_all_message”> – вызывает метод slideUp для всех <div class=”message_body”>
- клик по <a class=”show_all_message”> – скрывает элемент, и отображает <a class=”show_recent_only”>, так же вызывается метод slideDown для всех <li> послепятого
- клик по <a class=”show_recent_only”> – скрывает элемент, и отображает <a class=”show_all_message”>, так же вызывается метод slideUp для всех <li> после пятого
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $(document).ready( function (){ //hide message_body after the first one $(".message_list .message_body:gt(0)").hide(); //hide message li after the 5th $(".message_list li:gt(4)").hide(); //toggle message_body $(".message_head").click( function (){ $( this ).next(".message_body").slideToggle(500) return false ; }); //collapse all messages $(".collpase_all_message").click( function (){ $(".message_body").slideUp(500) return false ; }); //show all messages $(".show_all_message").click( function (){ $( this ).hide() $(".show_recent_only").show() $(".message_list li:gt(4)").slideDown() return false ; }); //show recent messages only $(".show_recent_only").click( function (){ $( this ).hide() $(".show_all_message").show() $(".message_list li:gt(4)").slideUp() return false ; }); }); |
Имитация Backend’a WordPress’a
Я думаю многие из читателей сталкивались с админской частью wordpress’a, точнее с редактирование комментариев. Попробуем сделать что-то подобное. Для анимации фонового цвета нам понадобиться соответствующий плагин для jQuery. (см. пример)
- добавим класс “alt” к каждому чётному элементу <div class=”pane”> (данный класс изменяет цвет фона элемента)
- клик по <a class=”btn-delete”> инициирует появление сообщения (alert), так же происходит анимация фонового цвета и прозрачности (backgroundColor и opacity) для <div class=”pane”>
- клик по <a class=”btn-unapprove”> – вызывает анимацию фона у <div class=”pane”> (цвет изменяется на желтый и обратно) и добавляет класс “spam”
- клик по <a class=”btn-approve”> – вызывает анимацию фона у <div class=”pane”> (цвет изменяется на зеленый и обратно) и удаляет класс “spam”
- клик по <a class=”btn-spam”> – вызывает анимацию фона у <div class=”pane”> (цвет изменяется на красный), и изменяет параметр “opacity” на “hide”
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //don't forget to include the Color Animations plugin $(document).ready( function (){ $(".pane:even").addClass("alt"); $(".pane .btn- delete ").click( function (){ alert("This comment will be deleted!"); $( this ).parents(".pane").animate({ backgroundColor: " #fbc7c7" }, "fast") .animate({ opacity: "hide" }, "slow") return false ; }); $(".pane .btn-unapprove").click( function (){ $( this ).parents(".pane").animate({ backgroundColor: " #fff568" }, "fast") .animate({ backgroundColor: " #ffffff" }, "slow") .addClass("spam") return false ; }); $(".pane .btn-approve").click( function (){ $( this ).parents(".pane").animate({ backgroundColor: " #dafda5" }, "fast") .animate({ backgroundColor: " #ffffff" }, "slow") .removeClass("spam") return false ; }); $(".pane .btn-spam").click( function (){ $( this ).parents(".pane").animate({ backgroundColor: " #fbc7c7" }, "fast") .animate({ opacity: "hide" }, "slow") return false ; }); }); |
Галерея изображений
Простейший пример реализации галереи, без перезагрузки страницы. (см. пример)
Для начала добавим тэг <em> в заголовки <h2>
По клику на изображения в <p class=thumbs> выполняем следующие действия:
- сохраняем значение атрибута “href” в переменной “largePath”
- сохраняем значение атрибута “title” в переменной “largeAlt”
- заменяем в элементе <img id=”largeImg”> значение атрибута “scr” и “alt” значениями из переменных “largePath” и “largeAlt”
- так же присваиваем элементу “h2 em” значение из “largeAlt”
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | $(document).ready( function (){ $("h2").append( '<em></em>' ) $(".thumbs a").click( function (){ var largePath = $( this ).attr("href"); var largeAlt = $( this ).attr("title"); $(" #largeImg").attr({ src: largePath, alt: largeAlt }); $("h2 em").html(" (" + largeAlt + ")"); return false ; }); }); |
Стилизируем ссылки
Большинство нормальных браузеров легко понимают когда мы хотим добиться от них стилизации ссылок для различного типа файлов, для это цели можно использовать следующее CSS правило: a[href $=’.pdf’] { … }. Но как обычно IE6 отличается умом и сообразительностью, по этой причине будем ставить ему костыли используя jQuery. (см. пример)
Для начала добавим класс для каждой ссылки, в соответствии с типом файла.
Затем выберем все элементы <a> которые не содержат ссылки на “http://www.webdesignerwall.com” и не начинающиеся на “#” в “href”, затем добавим им класс “external” и устанавливаем target= “_blank”.
01 02 03 04 05 06 07 08 09 10 11 12 13 | $(document).ready( function (){ $("a[href$=pdf]").addClass("pdf"); $("a[href$=zip]").addClass("zip"); $("a[href$=psd]").addClass("psd"); $("a:not([href*=http: //www.webdesignerwall.com])").not("[href^=#]") .addClass("external") .attr({ target: "_blank" }); }); |
Так же Вы можете посмотреть все примеры или скачать jQuery tutorial for beginners.
Вольный перевод: http://www.webdesignerwall.com/tutorials/jquery-tutorials-for-designers/
Так же много полезных ссылок по jQuery найдете на следующей странице: http://blog.termit.name/jquery/
Может кому пригодиться еще библиотека для PHP: http://anton.shevchuk.name/php/php-library-for-jquery/
Цикл статей
- jQuery для начинающих
- jQuery для начинающих. Часть 2. JavaScript Меню
- jQuery для начинающих. Часть 3. AJAX
- jQuery для начинающих. Часть 4. Селекторы
- jQuery для начинающих. Часть 5. Эффекты
- jQuery для начинающих. Часть 6. События
- jQuery для начинающих. Часть 7. Пишем плагины
- jQuery для начинающих. Часть 8. Расширяем фильтры
- jQuery для начинающих. Часть 9. Пишем плагины анимации
подскажите, как сделать следующее:
у меня меню в виде списка, где у списка задан ид
нужно что бы при нахождении в данном разделе из меню, элементу списка присваивался определеный класс?
Здравствуйте. У меня контакт форма с jquery валидацией. Если в форме что-то не заполнено,то при нажатии на сабмит выскакивает сообщение с ошибкой без перезагрузки страницы. Если при этом поле не заполнить и ещё раз нажать сабмит,то страница перезагружается и показывается уже сообщение об ошибке заданое в php. С чем может быть связана перезагрузка страницы при повторной ошибке? Если я не ошибаюсь, то для предотвращения перезагрузки добавляется return false в конце скрипта. В файле она есть. Спасибо!
вероятно, ошибка в js коде?
Подскажите как получить определенный по счету элемент. К приверу: знаю id списка ul, в ul х элементов li, как получить id z-того элемента li?
<
ul
id
=
"qwe"
>
<
li
id
=
"asd"
>...</
li
>
...
<
li
id
=
"zxc"
>...</
li
>
</
ul
>
var
id = $(
'#qwe li:eq(2)'
).attr(
'id'
);
Извините. А если не немного сложнее? Зная id=qwe, получить z-тый элемент li списка ul
<
li
id
=
"qwe"
>
<
ul
>
<
li
id
=
"asd"
>...</
li
>
...
<
li
id
=
"zxc"
>...</
li
>
</
li
>
z-тый это как понять?
Определенный по счету элемент li. Абсолютно таже самая задача, но
только вложенность другая. Используется jquery-1.4.2.min. Мне нужно
получить id элемента li в дереве simpleTree с подгрузкой веток на
ajax. В нем при перемещении показывает позицию, а мне id элемента,
следующего или предыдущего.
var
simpleTreeCollection;
$(document).ready(
function
(){
simpleTreeCollection = $(
".simpleTree"
).simpleTree({
...
afterMove:
function
(destination, source, pos){
//destination - в какую папку
//source - что
//pos - позиция
var
id=$(destination).attr(
"id"
);
alert(
"destination-"
+id+
" source-"
+$(source).attr(
"id"
)+
"
pos-"
+pos+
" "
+$(
"#"
+id+
" li:eq("
+pos+
")"
).attr(
"id"
));
},
...
});
});
скажите, а если мы используем выдвижную панель, то в целом страница будет индексироваться? не хотелось бы терять возможность индексации по ключевым словам..
Смотря как построена эта панель. Отключите в браузере JS и посмотрите будет ли выводится ссылки и будут ли они активны, если да то нечего беспокоится =)
спасибо автору за посты!
очень бы хотелось узнать технологию создания вот таких хеадеров:
http://kursksu.ru/
там наверно используется схожий механизм создания галереи, как описнао в статье? только как вот быть с радиокнопками?
плагин slider какой-нить скачайте, благо их в избытке
Здравствуйте! Подскажите пожалуйста как реализовать следующее: имеется страничка (типа инет магазина) с некоторым количеством продуктов, при загрузке отображаются все позиции “All Products”. Всего есть три ссылки “Analyzer”, “Accessories”, “Reels”, “All Products”. Как сделать так чтобы при клике допустим на ссылку “Accessories” оставались позиции только из этой категории а остальные скрывались и соотвественно при нажатии на “All Products” вновь показывались все продукты.
Спасибо.
Советую обратить внимание на плагин http://www.newmediacampaigns.com/page/a-jquery-plugin-to-create-an-interactive-filterable-portfolio-like-ours, думаю подобная реализация вам и нужна…
Антон, спасибо большое, это то что я искал!
Подскажите, как пользоваться функциями jQuery в прикладном файле myscript.js ? Я подключила myscript.js и jquery.js к html, а код в myscript полностью на классическом javascript.
Ну все очень просто:
1) Подключаете jQuery перед myscript
2) Используете в myscript все, что нужно из jQuery
И еще, было сказано, что файл во втором файле на чистом джава скрипте. Т.е. если я правильно понял – он уже написан и работает? Тогда чего вы хотите добиться?
Выдвижная панель на локалхост и на сервере – нормально работает: по клику на ссылку скрипта вида http://site.ru/# выдвигается панель. Но стоит на сервере включить SEF, ссылка получается вот такая: http://site.ru/страница.html/#
в итоге панель не выдвигается, а страница просто поднимается вверх.
Что тут можно сделать?
Радикальный метод – использовать в атрибуте href значение “javascript:void(0);”
Подскажите пожалуйста ошибку, не работает простой скрипт.
<
html
>
<
head
>
<
script
type
=
"text/javascript"
src
=
"jquery.js"
></
script
>
<
script
type
=
"text/javascript"
>
$(document).ready(function(){
alert($("#testId").className);
});
</
script
>
<
title
>
Test
</
title
>
<
style
>
a:hover {
background-color: red;
}
</
style
>
<
body
>
<
a
id
=
"testId"
href
=
"#"
class
=
"testClass"
>Click me!</
a
>
</
body
>
</
html
>
При загрузке alert показывает undefined. Вообще не находит по ид элемент. Спасибо.
To Alex
ты забыл голову закрыть =D
после на следующей строке вставь в всё заработает)
А не подскажите, как решить такую задачу:
Берём за основу Гармошку #1. Только неактивные пункты должны не прятаться полностью, а отображаться в сокращённом варианте – первые две-три строки.
Подскажите плиз реально ли через jquery сделать эффект скролинга картинки во вложеном диве ? Например ведем мышью влево а картинка двигается вправо и наоборот ! То есть нужно чтобы вычислялись _x и _y координаты курсора (думаю через плагин hover). натолкните плиз на мысль (с jquery пока еще не знаком но думаю это вопрос пяти минут ))))
Вот ссылочка на плагин: http://4coder.info/smart3d-jquery-plugin/
P.S. Ваш комментарий я чутка подправил…
Здравствуйте !
Помогите плз
<
style
>
.MyClass{
width:10;//это значение
}
</
style
>
$('.MyClass').animate({width:20});
так можно изменить значение c 10 на 20, предположим. А как можно получить его из .MyClass ?
P.S. кстати респект Антон, я на Вашем сайте суть JQuery, уловил никуда больше не залезая )
Не совсем уловил суть проблемы – если необходимо получить ширину элемента, то следует использовать функцию width:
var
width = $(
'.MyClass'
).width();
Если же надо получить исходное значение – то лучший способ сохранить width до каких либо изменений.
Спасибо ! Решили кучу проблем )
А кстати, а как же тогда получить позицию left,например ?
То, что Вы мне посоветовали :
alert( $('.MyClass').width());
работает, а выражения :
alert( $('.MyClass').left());
alert( $('.MyClass').background-color());
alert( $('.MyClass').position());
почему-то не верны, хотя записанны в моих CSS стилях 0_о..
Нет таких функций, для определения позиции используй position; для получения CSS свойств функцию css
Я сохраняю первый пример на рабочий стол и он не работает, почему так?
Здравствуйте. Ваша статья просто супер! Доступно и понятно.
Хотел спросить по поводу связанной анимации.
Допустим так , жду на Run и анимация проходит и должен показывать уже текст.
Приведу Ваш код:
<script type=
"text/javascript"
>
$(document).ready(
function
(){
$(
".run"
).click(
function
(){
$(
"#box"
).animate({opacity:
"0.1"
, left:
"+=300"
}, 1200)
.animate({opacity:
"0.4"
, top:
"+=160"
, height:
"20"
, width:
"20"
},
"slow"
)
.animate({opacity:
"1"
, left:
"0"
, height:
"800"
, width:
"800"
},
"slow"
)
.animate({top:
"0"
},
"fast"
)
.slideUp()
.slideDown(
"slow"
)
return
false
;
});
});
</script>
<
a
href
=
"index.php"
class
=
"run"
>Главная</
font
> </
a
>
<
div
id
=
"box"
>
блабла!
</
div
>
Здесь допустим главное меню. и в анимированном тексте будет написан “блабла!”
Далее захожу в другую ссылку
<
a
href
=
"about.php"
class
=
"run"
>О себе</
font
> </
a
>
<
div
id
=
"box"
>
ля-ля!
</
div
>
и тут будет в анианимированном тексте будет написан “ля-ля!”
как сделать?!
или плохо я задал вопрос?
Разобрался. =)
нужна помощь, может кто подкинет идею как можна воспользоваться джквери так чтобы при клике на одну из рубрик базы вытягивались по айди категории рубрики аджаксно в то же время при клике на категорию аджаксно вытягивались записи к категории.
Гармошка, более лаконичный вариант:
$(
'#box p:eq(0)'
).show();
$(
'h2'
).click(
function
() {
$(
'p:not('
+ $(
'h2'
).index(
this
) +
')'
).slideUp(
'slow'
);
$(
'p:eq('
+ $(
'h2'
).index(
this
) +
')'
).slideToggle(
'slow'
);
}).hover(
function
() {
$(
this
).toggleClass(
'active'
);
});
Добрый день! Не работает “Анимация для события hover #1” вместе с плугином
YOOtooltip (всплывающие подсказки). Если плугин выключить – анимация работает.
Как это можно исправить?
Попробуйте переименовать “#1”
Благодарю!
дело в том что этот плугин тоже подгружает jquery.js и наверно они как-то конфликтуют при этом…
можно ли использовать код для “Анимация для события hover #1″ но чтобы сам скрипт jquery.js подгружался плугином YOOtooltip (Cms Joomla)
Благодарю за полезные статьи.Все просто и доходчиво.
Как получить в переменную текст между тегами?
<
div
>My text</
div
>
var
myText = $(
'div'
).text();
var
myHTML = $(
'div'
).html();
но луче дать дивнику идентификатор или указать класс
например:
<
div
class
=
"demo-container"
>My text</
div
>
тогда скрипт, для получения содержимого получится таким:
var
myText = $(
'div.demo-container'
).text();
var
myHTML = $(
'div.demo-container'
).html();
Статьи по теме:
http://api.jquery.com/html/
http://api.jquery.com/text/
Хотя, я уже решил этот вопрос. Меня другой вопрос беспокоит. Как вставить текст в выделенный участок?
Если не секрет, то чьи работы вы использовали для оформления галереи изображений?
Уж больно понравились. Стиль кажется одинаковый?
Если автор не известен, то пойдёт название рисунка, или хотя бы оригинальное название файла…
Попробую тогда сам найти. Если кто из посетителей вдруг опознает, не сочтите за труд отозватся.
Спасибо заранее.
За чётко изложенный материал кстати, тоже. Да и у сайта дизайн весьма приятный.
Здравствуйте, сайт замечательный!
Возникла ситуация, не знаю как решить, нужно реализовать увеличение картинки, чтоб при увеличении блок с картинкой не увеличивался, реализовал, код такой:
<
script
type
=
"text/javascript"
>
$(function(){
$('.zoom1').hover(function(){
$(this).children('img').stop()
.animate({width:"190px",height:"190px",left:"-33px",top:"-20px"}, 500);
},
function(){
$(this).children('img').stop()
.animate({width:"90px",height:"90px",left:"0",top:"0"}, 500);
});
});
</
script
>
Пример с этим кодом вот: http://webostrovok.ru/demo/jqueryzoom/zoom.html
Чтобы картинка увеличивалась как бы из центра задал отрицательные отступы, увеличивается вроде красиво, но когда курсор уводишь – картинка резко прыгает вправо и потом уменьшается, для маленьких картинок с маленьким отрицательным отступом это не очень страшно, но для больших получается совсем не красиво. И, если курсор с увеличенной картинки уводишь вправо или вниз – картинка начинает дёргаться.
Подскажите пожалуйста как можно реализовать чтоб картинка начинала уменьшаться без скачка вправо, как бы с того места где она сейчас увеличенная? И что может быть причиной дёргания картинки когда курсор уводишь вправо или вниз? Я что-то никак не могу разобраться.
Попробуйте использовать метод stop с параметрами
$(
this
).children(
'img'
).stop(
true
,
true
)
К сожалению это не помогло, очень хочется во всей этой красоте хорошо разбираться, но пока сложновато.
Ничего у меня не получилось, пришлось убрать отступы, может когда нибудь решу эту задачу.
Здравствуйте! Помогите решить проблему, а то никак не получается.
Сайт использует загрузку данных с помощью AJAX. Данные загружаются в .
Хотелось бы сделать чтобы высота автоматически регулировалась в зависимости от подгружаемого текста. Как это сделать. Спасибо.
Пока все выглядит так http://sunstudio.host-ed.net/index2.php
то есть сначала закрывается потом открывается. Но это не удобно.
Почему когда к странице подключаю посторонний скрипт, то jQuery перестаёт работать, а по отдельности всё отлично работает. В чем проблема, как решить???
Здравствуйте!а как можно сделать так, чтобы в галерее при нажатии на большое изображение оно открывалось в новом окне еще больше(или в этом же, поверх)?только надо что бы все изображение так делали, а то у меня получается только первое(которое изначально большое). Заранее спасибо)
Можно добавить ссылку на большем изображении и так же подменять у него href:
<
p
><
a
id
=
"origImg"
href
=
"images/img1-orig.jpg"
><
img
id
=
"largeImg"
src
=
"images/img1-lg.jpg"
alt
=
"Large image"
/></
a
></
p
>
Остается придумать лишь каким образом сохранить путь к большему размеру, можно его конечно в дата атрибут засунуть согласно HTML5
Добрый день, Антон!
Подскажите, плис, голову сломала, пытаясь понять как сделать следующее:
1. Выводится в цикле a href товара с каталога
2. По нажатию на наименование должно открыться модальное окно с подробным описанием и input кол-ва + кнопка “в корзину”.
3. По кнопке “В корзину” идет переход на эту же страницу, там в сессию добавится нужный товар с нужным количеством.
4. Окно Диаога с подробным описанием должно оставаться открытым, пока не нажмут close (крестик)
У меня не получается реализовать пункт 2 и 4.
Испольщую
$(
function
(){
$(
"#dialog"
).dialog({
autoOpen:
false
,
modal:
true
});
$(
".openD"
).click(
function
(){
$(
"#dialog"
).dialog(
"open"
);
});
$(
".closeD"
).click(
function
(){
$(
"#dialog"
).dialog(
"close"
);
});
});
И все. дальше затык. Не понимаю, как в цикле она может работать…
Помогите мыслью-идеей. Туплю над этим уже 2-й день…
Спасибо заранее
Наталья
<script src=
"js/jquery-1.4.2.min.js"
type=
"text/javascript"
></script>
<script src=
"js/jquery-ui-1.8.5.custom.min.js"
type=
"text/javascript"
></script>
<link type=
"text/css"
href=
"css/ui-lightness/jquery-ui-1.8.5.custom.css"
rel=
"stylesheet"
/>
<script type=
"text/javascript"
>
$(
function
(){
$(
"#dialog"
).dialog({
autoOpen: false,
modal: true
});
$(
".openD"
).click(
function
(){
$(
"#dialog"
).dialog(
"open"
);
});
$(
".closeD"
).click(
function
(){
$(
"#dialog"
).dialog(
"close"
);
});
});
</script>
<?
$id
=
$_GET
[
'param'
];
for
(
$i
=0;
$i
<7;
$i
++)
{
if
(
$id
==
$i
)
$openD
=
"openD"
;
else
$openD
=
"prostotak"
.
$i
;
echo
'<a class="'
.
$openD
.
'" href="dialogopen1.php?param='
.
$i
.
'">Открыть подробнее по товару с номером - '
.
$i
.
'</a><br>'
;
}
?>
<div id=
"dialog"
title=
"Диалоговое окно"
>
<?
echo
'<form action="dialogopen1.php?lang='
.
$lang
.
'&page='
.
$page
.
'¶m='
.
$param
.
'&all_art='
.
$all_art
.
'&get_poisk='
.
$poisk
.
'" method=post>'
;
echo
'Введите кол-во'
;
echo
'<input class="input" name="kolvo" value="" size="8" maxlength="10">'
;
echo
'<input type="hidden" name="id_tovar" value="'
.
$id_tovar
.
'">'
;
echo
'<input type="image" src="/images/inkorzina.gif" name="submit" align="middle">'
;
echo
'</form>'
;
?>
</div>
Я не совсем понял задачу, если необходимо перезагрузить страницу и при этом оставить отрытым окно диалога, то можете не мучатся – это невозможно, тут нужен попап.
Антон, спасибо Вам большое за такую доходчивую статью!
Здравствуйте.
Подскажите, пожалуйста, где можно прочесть о том, как делать циклические карусели?
спасибо, реально понятная статья, хорошо обьясняете :)
Всем привет.
Есть пункты меню
Пункт 1 | пункт 2 | Пункт 3
Как сделать так, что бы по наведению мышки на пункт 1 меню выезжала панель (как в примере “Выдвижная панель”) с элементами меню второго уровня для 1 пункта. Когда наводишь мышку на 2 пункт – та панель закрывалась, а открывалась панель 2 пункта.
Заранее спасибо…
:)=-
Добрый день, подскажите пожалуйста, как переключить класс и сохранить его при перезагрузке страницы.
Дело в, что надо менять картинку, при смене направления сортировки. Как в примере гармошки1.
:)=-
kinder999, используй вместо экшина click, экшин hover.
Я новичок в jQuery и сейчас делаю только первые шаги, поэтому возможно мои вопросы
покажутся найвными, но для меня они очень важны.
Не могли бы вы обьяснить что нужно поменять что бы в примере “Выдвижная панель”
панель находилась бы в нижнем правом углу экрана и выдвигалась бы не сверху вниз а снизу
вверх, что для этого угла как бы и естественно.
Заранее благодарю.
Думаю стоит начать с CSS, необходимо для панели прописать стиль вроде следующего:
bottom
:
0
;
position
:
fixed
;
z-index
:
2999
;
JS думаю останется без изменений
Здравствуйте.
Подскажите можно ли написать приведённый ниже код компактнее?
jQuery(document).ready(
function
() {
if
(jQuery(
"li.#widget1"
).hasClass(
"closed"
))
jQuery(
".widget1image"
).addClass(
"addAppwidget1"
);
if
(jQuery(
"li.#widget2"
).hasClass(
"closed"
))
jQuery(
".widget2image"
).addClass(
"addAppwidget2"
);
if
(jQuery(
"li.#widget3"
).hasClass(
"closed"
))
//...
//... и т.д. по возрастающей вплоть до 30
//...
if
(jQuery(
"li.#widget30"
).hasClass(
"closed"
))
jQuery(
".widget30image"
).addClass(
"addAppwidget30"
);
});
Код не проверял, но должен работать:
$(
'li[id^=widget]'
).each(
function
(){
if
($(
this
).hasClass(
'closed'
)) {
var
index = $(
this
).attr(
'id'
).substr(7);
$(
".widget"
+index+
"image"
).addClass(
"addAppwidget"
+index);
}
})
Нет, не сработало.
Вот на всякий случай html разметка:
<
ul
id
=
"column1"
class
=
"column"
>
<
li
class
=
"widget color-orange closed"
id
=
"widget1"
>...</
li
>
<
li
class
=
"widget color-orange"
id
=
"widget2"
>...</
li
>
...
...
</
ul
>
<
ul
id
=
"column2"
class
=
"column"
>
...
<
li
class
=
"widget color-orange"
id
=
"widget15"
>...</
li
>
...
</
ul
>
<
ul
id
=
"column3"
class
=
"column"
>
...
...
<
li
class
=
"widget color-orange closed"
id
=
"widget30"
>...</
li
>
</
ul
>
Я уже и так попробовал:
<script language=
"javascript"
>
$(document).ready(
function
() {
$(
'ul.column li[id^=widget]'
).each(
function
(){
if
($(
this
).hasClass(
'closed'
)) {
var
index = $(
this
).attr(
'id'
).substr(7);
$(
".widget"
+index+
"image"
).addClass(
"addAppwidget"
+index);
}
})
});
</script>
Вот так заработало:
<script language=
"javascript"
>
$(document).ready(
function
() {
$(
'li[id^=widget]'
).each(
function
(){
if
($(
this
).hasClass(
'closed'
)) {
var
id = $(
this
).attr(
'id'
);
$(
"."
+id+
"image"
).addClass(
"addApp"
+id);
}
})
});
</script>
Здравствуйте, скажите пожалуйста, стиль active в примере с гармошкой имеет такой код приблизительно?
.active
{
list-style-image:url(loading.gif);
}
.active h3 {
background: url(‘zoom.png’);
padding: 3px 0 3px 9px;
margin: 0;
}
.active h3 IMG {
margin-bottom: -6px;
}
Или как? Спасибо
Нашел цсс в штмл страничке, но вот беда, изображения которые переворачиваются при клике на h3 .Можно подробнее о использовании изображений как фоновых рисунков для примера с гармошкой!
Антон, отличная статья, большое спасибо тебе за нее.
Подскажи пожалуйста, использую упрощенную версию кода с движущимся квадратом. Код вот такого вида:
$(document).ready(function(){
$(“#sidebar ul a”).click(function(){
$(“#sidebar”).animate({opacity: “1”, left: “+=240”}, 1200)
});
});
Вопрос такой, если ставить, как в этой статье return false; то перехода по ссылке не происходит. А мне нужно чтобы происходил, но после полного выполнения скрипта, как это сделать? А то переходит, когда ему вздумается) Заранее большое спасибо за ответ.
Замечательная статья! Спасибо!
Также рекомендую видеокурс по jQuery, нашел на просторах инета:
<
a
href
=
"http://www.info-dvd.ru/a/194018"
>http://www.info-dvd.ru/a/194018</
a
>
Творческих успехов Вам!