Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pierwszy wyświetlany element w oknie przeglądarki, jQuery
norbi666
post 27.03.2014, 11:14:26
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.03.2012

Ostrzeżenie: (0%)
-----


Witam, mam problem poszukuje funkcji jQuery/AJAX która pomoże mi ustalić pierwszy widoczny element w oknie przeglądarki.

Nie chodzi o szukanie pierwszego diva w kodzie. Chodzi mi o to jak ktoś ma przewija stronę na sam dół to pierwszy widoczny div na górze ma swój id, który gdzieś na stronie chcę wyświetlić. Mam to zrobione ale na zasadzie najeżdżania kursorem na tych elementach, i pojawia się problem gdy ktoś będzie w całkiem innym miejscu na stronie oraz gdy ktoś przewija suwakiem.

  1. <p><span style="color: red;">@</span>
  2. <script>// <![CDATA[
  3. $( "article" ).mousemove(function( event ) {
  4.  
  5. $( "span" ).text( this.id);
  6.  
  7. });
  8. // ]]></script>
  9. </p>


Nie chciał bym gotowca tylko wskazania którą funkcję powinienem użyć przy tym problemie. W dokumentacji nie mogę znaleźć jasnej odpowiedzi.

ps. Przepraszam jeśli wrzuciłem nie do tego działu.

Ten post edytował norbi666 27.03.2014, 11:22:24
Go to the top of the page
+Quote Post
mar1aczi
post 27.03.2014, 11:34:28
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Hmm, jest tego troszkę:
http://www.benknowscode.com/2013/07/detect...ith-jquery.html
http://stackoverflow.com/questions/9026751...olling-viewport
http://css-tricks.com/snippets/jquery/dete...isible-element/


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
vonski
post 27.03.2014, 11:35:15
Post #3





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To może być pomocne: https://api.jquery.com/offset/
Do tego event scrollowania i .scrollTop():

  1. $(window).on({
  2. 'scroll.Scrolling': function() {
  3. console.log($(window).scrollTop());
  4. }
  5. });


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
norbi666
post 27.03.2014, 13:29:27
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.03.2012

Ostrzeżenie: (0%)
-----


Dzięki @mar1aczi! Twój link trochę mnie na kierował.

Do szedłem do etapu http://jsfiddle.net/CmpEt/243/ i mam problem z podmianą tekstu w span na wartość ID diva.

  1. $spa.replaceWith( this.id);

Niestety nie działa, a myślałem ze będzie to prostsze smile.gif

Dobra kolejny postęp, doszedłem do tego że pobiera mi wartość do span ale tylko z pierwszego diva :/
http://jsfiddle.net/CmpEt/245/

  1. <div id="1111">div 1</div>
  2. <div id="aaa">div 2</div>
  3. <div id="2343">div 3</div>
  4. <div>div 4</div>
  5. <div>div 5</div>
  6. <div>div 6</div>
  7. <div id="side"><span>ssd</span></div>
  8. $(window).scroll(function() {
  9.  
  10. var winTop = $(this).scrollTop();
  11. var $divs = $('div');
  12. var $spa = $('span');
  13. var top = $.grep($divs, function(item) {
  14. return $(item).position().top <= winTop;
  15. });
  16.  
  17. $spa.replaceWith($(top).attr( "id" ));
  18. $divs.removeClass('active');
  19. $(top).addClass('active');
  20.  
  21. });
  22.  
  23.  
  24.  
  25.  


Ten post edytował norbi666 27.03.2014, 13:57:13
Go to the top of the page
+Quote Post
trueblue
post 27.03.2014, 17:06:30
Post #5





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


$.grep zwraca Ci kolekcję wszystkich divów powyższej span.
A attr() zwraca atrybut pierwszego elementu w kolekcji.
Kod działa prawidłowo.


--------------------
Go to the top of the page
+Quote Post
norbi666
post 28.03.2014, 18:36:41
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.03.2012

Ostrzeżenie: (0%)
-----


No dobra, tylko że ja chciałem żeby arrt zwracał id pierwszego widocznego diva. Nie mam pomysłu jak to ugryźć :/
Go to the top of the page
+Quote Post
trueblue
post 28.03.2014, 18:41:45
Post #7





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. $spa.replaceWith($(top).last().attr( "id" ));


--------------------
Go to the top of the page
+Quote Post
norbi666
post 28.03.2014, 18:57:00
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.03.2012

Ostrzeżenie: (0%)
-----


Span wyświetla zawartość id ostatniego diva, w którym jest powyższy span.
Go to the top of the page
+Quote Post
trueblue
post 28.03.2014, 19:05:32
Post #9





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. $(window).scroll(function() {
  2.  
  3. var winTop = $(this).scrollTop();
  4. var $divs = $('div:not(#side)');
  5. var $spa = $('span');
  6. var top = $.grep($divs, function(item) {
  7. return $(item).position().top <= winTop;
  8. });
  9. $spa.text($(top).last().attr( "id" ));
  10. $divs.removeClass('active');
  11. $(top).addClass('active');
  12.  
  13. });



--------------------
Go to the top of the page
+Quote Post
norbi666
post 29.03.2014, 15:29:26
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.03.2012

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 28.03.2014, 19:05:32 ) *
  1. $(window).scroll(function() {
  2.  
  3. var winTop = $(this).scrollTop();
  4. var $divs = $('div:not(#side)');
  5. var $spa = $('span');
  6. var top = $.grep($divs, function(item) {
  7. return $(item).position().top <= winTop;
  8. });
  9. $spa.text($(top).last().attr( "id" ));
  10. $divs.removeClass('active');
  11. $(top).addClass('active');
  12.  
  13. });


Dzięki Ci trueblue! Dokładnie o to chodziło! Teraz muszę tylko rozwiązać kwestie żeby pobierał id pełnego widocznego diva i będę miał to co potrzebuje.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 05:11