Аднаразовая падзея ў jQuery

Калі мы вывучалі адвязванне падзей з дапамогай метаду off, мы выкарыстоўвалі наступную канструкцыю:

javascript$('li').on('click', function() {
  $(this).append('!');
  $(this).off('click', func);
});

Спачатку мы прымацоўвалі функцыю-апрацоўшчык з дапамогай on, затым адвязвалі з дапамогай off.

У jQuery ёсць зручны метад one, які дазваляе прывязаць аднаразовую падзею - яна выканаецца толькі адзін раз, а потым аўтаматычна адвяжацца. Гэты метад першым параметрам прымае тып падзеі, а другім - прывязаную функцыю.

Наступны прыклад мы разгледзім на аснове ніжэйпрыведзенага HTML кода:

html<ul>
  <li>text</li>
  <li>text</li>
  <li>text</li>
</ul>

CSS код выглядае так:

cssli {
  width: 100px;
  cursor: pointer;
}

Цяпер да кожнай li прывязваем аднаразовую падзею:

javascript$('li').one('click', function() {
  $(this).append('!');
});

Панаціскайце на пункты спісу. Як бачыце, мы атрымалі той жа эфект, дзякуючы метаду one.

Задание 1

Прывяжыце ўсім спасылкам падзею - па навядзенню на спасылку ў канец яе тэксту дапісваецца яе href у круглых дужках. Пасля першага навядзенню на спасылку след адвязаць ад яе падзею, якое дадае href у канец тэксту.

Задание 2

Для ўсіх інпутаў зрабіце так, каб яны выводзілі свой value пры націску на любы з іх, але толькі па першым націску. Паўторнае націсканне на інпут не павінна выклікаць рэакцыі.

Задание 3

Дадзеныя абзацы з лікамі. Па кліку на абзац у ім павінен з'явіцца квадрат ліку, якое ён утрымлівае, але толькі па першым кліку. Па двайным кліку на абзац лік у абзацы павінна падвоіцца, але таксама толькі першы раз.

Задание 4

Дадзеныя абзацы. Зрабіце так, каб па першым кліку на абзац яму ў канец дадаваўся '!', але толькі па першым кліку.