отмена повторного выполнения события
допустим есть событие onscroll
нужно чтобы при первом вызове этого события что-либо выполнялось (примером alert('it work');) , но при повторном вызове этого события onscroll уже не работало и выполняло alert('it broke'). |
<!DOCTYPE HTML> <html> <head> </head> <body> <a href="#">click me </a> <script> var elem = document.body.children[0]; elem.onclick = onElementClick; var first_call = false; function onElementClick () { if(!first_call){ first(); first_call = true; return; } alert("second"); return false; } function first() { alert("first"); } </script> </body> </html> |
frant32,
window.onscroll = function() { alert('it work'); window.onscroll = function () { alert('it broke'); }; } |
Цитата:
|
спасибо за оба варианта )
|
а нельзя сдеалать какой-то счётчик?
чтобы допусти его обнулив после допустим 3го или 7го вызова (при коктрому выдаёт alert("second");) функция onElementClick работала по новому ? |
<!DOCTYPE HTML> <html> <head> </head> <body> <a href="#">click me </a> <script> var elem = document.body.children[0]; elem.onclick = onElementClick; var i = 0; function onElementClick () { if(i <= 3 ){ first(); i++; return; } alert("все!"); return false; } function first() { alert(i+1); } </script> </body> </html> |
нет всё чёт не то не могу прикрутить к тому как надо, пойдём другим путём =)
<html> <body> <style> body {height:1000px;} </style> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script> var doc = $(document); doc.scroll(function(){ if(doc.scrollTop() >= 1 ){ alert('sss'); } }); </script> </body> </html> воот , суть в том что мне нужно что-бы после первого срабатывания окошко вылазило лиш рас , тоесть после последующего скрола ничего не присходило.. а то получается так : я загрузил страницу --> проскролюю --> вылазит окошко -->незакрыв окошко дальше скорлю --> закрываю окошко --> и вылазит куча окошек.... или же прокрутив колесиком (быстро) полоборота вылазит куча этих окошек ))) вот как блин с этим боротся.... |
frant32,
<html> <body> <style> body {height:1000px;} </style> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script> var doc = $(document), i = 0; doc.scroll(function(){ if(i>0){ return; } if(doc.scrollTop() == 1){ alert('sss'); i++; } }); </script> </body> </html> |
<html> <body> <style> body {height:1000px;} div { width:100px; height:50px; background:#000; position:fixed;} </style> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <div id = "id1"> dfdf </div> <script> var doc = $(document); var i = 0; doc.scroll(function(){ if(i>0){ return } if(doc.scrollTop() != 0){ i++; $('#id1').css('opacity','0.5'); } }); </script> </body> </html> но при скроле до упора вверх прозрачность исчезает ... |
сделал это так
<html> <body> <style> body {height:1000px;} div { width:100px; height:50px; background:#000; position:fixed;} </style> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <div id = "id1"> dfdf </div> <script> var doc = $(document); var i = 0; doc.scroll(function(){ if(i>0){ return } if(doc.scrollTop() == 0){ i++; $('#id1').css('opacity','1'); $('#id1').stop().animate({height:50},500); }else{ i--; $('#id1').css('opacity','0.4'); $('#id1').stop().animate({height:10},500); } }); </script> </body> </html> не знаю на сколько это правильно , но работает так как хочу))) и кто мне обьяснить почему без stop(); анимация работает не правильно ? |
<!DOCTYPE html> <html> <head> <style type="text/css"> html, body{height:1000px;} .block{width:300px;height:300px;background:#000000;position:fixed;} </style> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $(window).scroll(function(){ var scrolls=$.browser.msie?document.body.scrollTop:$(this).scrollTop(); if(0<scrolls) { $('.block').css('opacity','0.5'); } else { $('.block').css('opacity','1'); } }); </script> </head> <body> <div class="block"></div> </body> </html> |
Цитата:
|
это не особо страшно
|
Часовой пояс GMT +3, время: 05:49. |