Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Pierwszy element nie reaguje na nadanie klasy
nappy
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


Cześć,

Po najechaniu wszystkie pozostale kolumny wygasaja, po kliknieciu aktualna kolumna rozszerza sie (po ponownym - zwija). Wszystko pieknie tylko nie dziala na 1 kolumnie. Czemu? Firebug pokazuje, ze klasa jest nadawana poprawnie. Jednak pierwsza kolumna nie przyjmuje zadnej wartosci z nadanej klasy, tak jakby byla ona pusta. Jakies pomysly? Pls help!

link:
http://janzielinski.eu/sample/

kod:
  1. <style type="text/css">
  2. body {width: 4000px;}
  3. div.wrapper {position: relative; width: 100%; height: 100%;}
  4. div.col {position: relative; float: left; width: 200px; height: 350px; background: #999; margin-right: 20px;}
  5. div.col+.wide {width: 700px;}
  6. </style>


Kod
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

                
$.fn.extendCol = function() {
    $('div.col').toggle(function(){
                        
            $(this).addClass('wide');
            
        }, function(){
            
            $(this).removeClass('wide');
            
        })
}



$('div.col').addClass('inactive');
$('div.col').mouseenter(function(){
            $(this).removeClass('inactive');
            $(this).addClass('active');
            $('.inactive').stop().animate({opacity: 0.4}, 200)
            });

            $('div.col+.active').extendCol();
    
        
$('div.col').mouseleave(function(){
        
            $('.inactive').stop().animate({opacity: 1}, 200)
            $(this).removeClass('active');
            $(this).addClass('inactive');        
            });
});

</script>


  1. <div class="wrapper">
  2. <div class="col">col 1</div>
  3. <div class="col">col 2</div>
  4. <div class="col">col 3</div>
  5. <div class="col">col 4</div>
  6. </div>


*bump*

Ten post edytował nappy 14.06.2010, 15:18:01
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zacznijmy od tego, że identyfikatory nie mogą być liczbą.
Go to the top of the page
+Quote Post
nappy
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


ale jak wiesz w tym przykładzie to nie ma znaczenia...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sorki, że się wcinam, ale co to robi:
div.col+.active
?
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
ale jak wiesz w tym przykładzie to nie ma znaczenia...

FYI, różne przeglądarki różnie na takie fiksy reagują; nie może być liczbą, bo tak jest w specyfikacji. Parsery po prostu potrafią zastrajkować, jeśli identyfikator jest nieprawidłowy.

Wiele osób miało różne dziwne problemy, których źródłem był właśnie niepoprawny identyfikator. Dlatego powstrzymuję się od jakiejkolwiek dalszej analizy dopóty, dopóki ktoś nie poprawi swojego kodu tak, aby był on poprawny.

~nospor: http://www.w3.org/TR/CSS2/selector.html#adjacent-selectors
Go to the top of the page
+Quote Post
nappy
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


Ok, rozumiem - standardy są po to żeby się ich trzymać (IMG:style_emoticons/default/winksmiley.jpg) Wywaliłem [id] bo nie jest tam w ogóle potrzebne a jak widać wprowadza niepotrzebny galimatias.

Masz jakiś pomysł jak to naprawić? Bo szczerze, to cholera nie wiem co jest źle. Sam jak możesz, to odpal to na firebugu i zobacz, że każdy element zachowuje się identycznie. What the... ?!
Go to the top of the page
+Quote Post
haahh
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 9
Dołączył: 6.06.2010

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


  1. div.col+.wide {width: 700px;}


na

  1. div.col.wide {width: 700px;}


i zadziałało. (na szybko)

edit: Również nie wiem, dlaczego pierwszy div źle interpretowało, a 2,3 i 4 dobrze. Tak, czy siak "div.col.wide" też jest poprawne.

Ten post edytował haahh 14.06.2010, 15:54:13
Go to the top of the page
+Quote Post
nappy
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


'Głupi ja' (IMG:style_emoticons/default/worriedsmiley.gif)

Dzięki, ale swoją drogą - czemu to nie działało tak jak we wcześniejszej wersji? Przecież efekt jest ten sam (?)
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A, to chciałeś dwie klasy nadać...

Czemu nie działało? Zerknij do mojego linka, podałem tam namiary na pewien selektor, którego - z tego co teraz widzę - użyłeś nieświadomie.
Go to the top of the page
+Quote Post
nappy
post
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


No ale przecież klas może być ile mi się żywnie podoba... zrobienie div.klasa1+.klasa2 daje efekt div.klasa.klasa2 - co pokazuje firebug. Rozumiem (chyba) link podany wyżej, dziwi mnie tylko, że nie działało to dla pierwszego elementu...

W każdym razie - działa, ale i tak postaram się dojść do tego czemu nie działało tak jak zrobiłem to wcześniej. Dzięki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 12:09