Jump to content
  • 0

Как лучше учить jQuery?


tini.kRyptoNite
 Share

Question

Выборку научился делать и некоторые методы знаю. Подскажите пожалуйста как и по чем можно учить jQuery. Может есть где сборник туториалов хороший? Или брать самому и пробовать что-то сделать?

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Так тогда если можно что бы не создавать тему, буду тут свои вопросы оставлять по мере изучения jQuery. Извините если они уж слишком тупые, но разобраться не могу. Вот первый:

<ul>
<li>
<a href="#">
<img src="images/some.jpg" width="65" height="36" alt="some" />
</a>
<div class="pop-upBlock">
<h3>Som text</h3>
</div>
</li>
</ul>

Вот есть такая структура, таких же li может быть несколько. Только с другой картинкой и текстом, но не в этом суть. Так вот блок с классом pop-upBlock скрыт пока. Нужно что бы при наведении он показывался, но проблема в том что если прописать так:


$('ul li a img').hover(function (){
$('ul li .pop-upBlock').css('left', 0);
}, function() {
$('ul li .pop-upBlock').css('left', '-9999px');
});

То при наведении на любой из img будут всплывать все pop-upBlock, а мне нужно только с pop-upBlock с того пункта списка на картинку которого наводим. Есть такая вещь this, но что-то не могу понять как дополнить до нее нужную часть или если нельзя селектор this как то дополнять то другой вариант. Подскажите пожалуйста.

Link to comment
Share on other sites

  • 0

Когда вы делаете так $('ul li .pop-upBlock') , тем самым выполняете выборку ВСЕХ .pop-upBlock которые находятся на странице в контексте ul li.

Для выбора в вашем случае только .pop-upBlock текущего контекста, вам нужно ограничить область выборки, например с помощью $(this)


$('ul li a img').hover(function (){
$(this).closest('li').find('.pop-upBlock').css('left', 0);
}, function() {
$(this).closest('li').find('.pop-upBlock').css('left', '-9999px');
});

$(this).closest('li') // обращается к ближайшему родителю селектор которого соответствует переданному в качестве аргумента методу closest, далее уже относительно текущего li ведется поиск с помощью метода find элемента .pop-upBlock и уже конкретно к нему применяются свойства css()

  • Like 2
Link to comment
Share on other sites

  • 0

Спасибо вам большое, теперь понял. Получилось. Единственное что только там нужно использовать parents вместо closet. Оказывается closet начинает поиск с текущего элемента, а parents с родителя.

Link to comment
Share on other sites

  • 0

Вот и не правильно. Как раз closest в данной ситуации нужен. Потому что parents вернет набор ВСЕХ совпавших родителей, то есть если вложенность типа ul>li>ul>li>a , то $('a').parents('li') вернет массив из всех совпавших родительских li, то есть два элемента! А $('a').closest('li') вернет только ближайшего родителя из контекста, то есть один li, этот ul>li>ul>li.

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

UPD:

Зачем мне ваш архив?

Link to comment
Share on other sites

  • 0

Следующий вопрос. Я сделал так что бы этот всплыв блок появлялся немного перекрывая ту картинку на которую нужно навестить что бы этот блок появился, и если поставить мышку в место где этот всплыв блок перекрывает картинку то блок начинает мигать(исчезать и появляться). Может кто подсказать как это устранить?

Link to comment
Share on other sites

  • 0

Вот еще такой вопрос. Есть такой код

$('#tabsWrapp .tabNav li a').click(function() {
tabsContainers.hide();
tabsContainers.filter(this.hash).show();
$('#tabsWrapp .tabNav li a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(':first').click();

В принципе всё понятно, но что в конце означает .filter(':first').click();?

Edited by tini.kRyptoNite
Link to comment
Share on other sites

  • 0

filter()

Отбрасывает все элементы, которые не соответствуют указанному выражению в аргументе, из набора совпавших элементов.

:first - это селектор указывающий на первый элемент в наборе.

Тем самым filter(':first') отбрасывает все кроме первых элементов в наборах.

Следующий за ним .click() искусственно вызывает событие клика по оставшемся элементам после фильтрации.

  • Like 1
Link to comment
Share on other sites

  • 0

filter()

Отбрасывает все элементы, которые не соответствуют указанному выражению в аргументе, из набора совпавших элементов.

:first - это селектор указывающий на первый элемент в наборе.

Тем самым filter(':first') отбрасывает все кроме первых элементов в наборах.

Следующий за ним .click() искусственно вызывает событие клика по оставшемся элементам после фильтрации.

Спасибо вам огромное. Чутка не правильно спросил, filter(':first') это знал, а вот это не понимал .click(). Теперь всё понятно.

Link to comment
Share on other sites

  • 0

Сделал я слайдер. Но он получился статический, как его заставить меняться в цикле?

Вот исходный код слайдера:

	$('#small li a').click(function(event) {
if ( $(this).attr('href') != $('#big img').attr('src') ) {
$('#big img').hide().attr('src', $(this).attr('href'));
$('#big img').load(function() {
$(this).fadeIn(1000);
});
$('#small li').removeClass('current');
}
$(this).closest('li').addClass('current');
event.preventDefault();
});

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy