Есть несколько вещей, которые меня действительно беспокоят в отношении того, как jquery обрабатывает вложенные функции (не до такой степени, что я не могу заснуть, но это происходит), и я бы хотел, чтобы эксперт по jquery мог объяснить, как все это работаетМне кажется.
Допустим, у вас есть следующий HTML-код:
<button id="first">click me first</button>
<button id="second">click me next</button>
и следующий код jquery:
$(document).ready(function() {
$('#first').click(function() {
$('#second').click(function() {
alert('test');
});
});
});
Появится диалоговое окно, еслиВы нажимаете кнопку first
, а затем кнопку second
.
Я понимаю, что jquery создает экземпляр функции $('#first').click()
, когда DOM готов, и вызывает ее, когда кто-то нажимает на кнопку first
.
Однако меня удивляет следующее:
[Q1] - это функция $('#second').click()
, которая также создается на DOM ready или только когда вызывается $('#one').click()
?
Теперь, когда вы смотрите на код jQuery, ничего не происходитэто «держит нас» в функции $('#first').click()
, то есть когда пользователь нажимает кнопку first
, должна быть запущена функция $('#second').click()
, и мы должны немедленно выйти из функции $('#one').click()
.Однако после нажатия кнопки first
jquery должен каким-то образом сохранять $('#second').click()
в памяти на неопределенный срок, если пользователь нажимает кнопку second
.
[Q2], как jquery знает, как сохранить$('#second').click()
работает в памяти до тех пор, пока пользователь не нажмет на кнопку second
после нажатия кнопки first
?
Наконец, скажем, вы хотели изменить свой код так, чтобы пользователь должен был нажать на кнопкуКнопка second
в течение 10 секунд после нажатия кнопки first
, чтобы появилось диалоговое окно:
[Q3] как бы вы реализовали это, чтобы jQuery знал, что нужно прекратить прослушивание событий щелчка накнопка second
через 10 секунд?