Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   единожды выполнить callback после .hide() нескольких элементов. (https://javascript.ru/forum/jquery/73292-edinozhdy-vypolnit-callback-posle-hide-neskolkikh-ehlementov.html)

winch 04.04.2018 14:56

единожды выполнить callback после .hide() нескольких элементов.
 
здравствуйте.
Столкнулся с такой проблемой:
при выполнении jquery функции
.hide(duration, callback)
callback выполняется для каждого скрываемого элемента, (это подтверждается документацией и моими экспериментами).
А как быть, если необходимо чтобы callback выполнился строго 1 раз, после скрытия всех элементов?

laimas 04.04.2018 15:43

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

winch 04.04.2018 15:55

понял! спасибо за наводку, попробую воспользоваться.
А я прочитал здесь: http://jquery.page2page.ru/index.php...ементов
что в callback не передается параметров. или там устаревшая инфа?

Nexus 04.04.2018 16:04

Цитата:

Сообщение от winch
что в callback не передается параметров

Это так.

laimas 04.04.2018 16:04

Цитата:

Сообщение от winch
в callback не передается параметров

А да, все верно, но это не проблема:

var obj = $(selector).hide(300, function() {
здесь можно узнать является ли this последним в наборе obj
})

Nexus 04.04.2018 16:04

Можно так: https://jsfiddle.net/7dtre9gL/

winch 04.04.2018 16:22

Воспользовался вариантом по ссылке от Nexus. так работает.
А как узнать через this последний ли это элемент, я так и не понял.

j0hnik 04.04.2018 16:30

Цитата:

Сообщение от winch (Сообщение 482281)
Воспользовался вариантом по ссылке от Nexus. так работает.
А как узнать через this последний ли это элемент, я так и не понял.

сравнить this == с последним элементом набора.

winch 04.04.2018 16:40

Цитата:

Сообщение от j0hnik (Сообщение 482283)
сравнить this == с последним элементом набора.

а чтобы получить последний элемент, надо ещё раз делать запрос по этому же селектору?
как-то не очень лаконично получается.

j0hnik 04.04.2018 16:43

winch, самый короткий вариант вам написал Nexus.


Часовой пояс GMT +3, время: 16:19.