Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Общий вопрос по jquery (https://javascript.ru/forum/jquery/18594-obshhijj-vopros-po-jquery.html)

Garik 07.07.2011 20:07

Общий вопрос по jquery
 
Приветствую!
Такой вопрос, если я правильно понимаю то код:
$('#block').css('border','1px solid red').next().hide()

выполнится последовательно, т.е. сначала добавится рамка, затем скроется следующий элемент.
А если писать к примеру так:
$('#block').css('border','1px solid red');
$('#block').next().hide();

то этот код не обязательно выполнится в таком порядке.

Собственно вопрос, как во втором случае заставить jquery ждать выполнение первой команды, а затем скрывать следующий за ним элемент?

Заранее спасибо!

trikadin 07.07.2011 20:59

Цитата:

Сообщение от Garik
$('#block').css('border','1px solid red');
$('#block').next().hide();

Сначала добавится рамка, потом скроется следующий элемент. Причём следующий элемент скроется не раньше, чем добавится рамка) Но код
$('#block').css('border','1px solid red').next().hide()

быстрее.

Garik 07.07.2011 21:14

trikadin,
А если например писать так:
$('#form :checkbox:checked').each(function(index){
// что-то делаем
}
$('#block').trigger('click');

То последняя строчка не будет ожидать окончания выполнения цикла.
Так как нужно правильно написать чтобы trigger сработал только после завершения цикла?
Может надо какую-то спец. команду написать?

trikadin 07.07.2011 21:32

Цитата:

Сообщение от Garik
То последняя строчка не будет ожидать окончания выполнения цикла.

Не будет? Вы пробовали? Если нет - то попробуйте. Если да - извините, я не большой спец в jquery, подсказать не смогу тогда. Но обычно ф-ции в JS выполняются последовательно.

melky 07.07.2011 21:36

Цитата:

Сообщение от Garik (Сообщение 112279)
$('#block').css('border','1px solid red');
$('#block').next().hide();

jquery будет искать элемент два раза, что не есть хорошо

Цитата:

Сообщение от Garik (Сообщение 112279)
Собственно вопрос, как во втором случае заставить jquery ждать выполнение первой команды, а затем скрывать следующий за ним элемент?

эти команды неасинхронны, они выполняются последовательно. что вас именно интересует?

Garik 07.07.2011 21:45

melky
$('#form :checkbox:checked').each(function(index){
// что-то делаем
}
$('#block').trigger('click');

Здесь последняя строчка не будет же ждать окончания выполнения цикла?
Если нет, то как сделать, чтобы trigger сработал только после полного прохода цикла?

melky 07.07.2011 21:50

будет ждать. почитайте, как работает JS.


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