Javascripttel csináltam egy legördülő listát. A második miért nem jelenik ugyanugy meg?
Még az elején közölném, hogy kezdő vagyok, csak magamtól kezdtem el programozni, ugyhogy bocsi a nagyon primitiv kérdésért...
Szeretnék több legördülő listát késziteni, innen a 6.-at [link] Igazából az egyiket sikerült is megcsinálnom, de azt hittem hogyha ujból beillesztem a html kodba ezt a reszt:
<div class="fleft">
<select id="cd-dropdown" class="cd-select">
<option value="-1" selected>Choose your prize</option>
<option value="1" class="icon-camera">Camera</option>
<option value="2" class="icon-diamond">Diamonds</option>
<option value="3" class="icon-rocket">Spaceship</option>
<option value="4" class="icon-star">Star</option>
<option value="5" class="icon-clock">Time</option>
</select>
</div>
akkor lesz egy másik ugyanolyan.De a másik nem olyan lett.Valaki el tudná magyarázni miért nem? vagyis akkor mit kell csinálni hogy a másik is ugyanugy nézzen ki. Lehet rossz az elgondolásom, de ugy gondoltam hogy ha azt beillesztem akkor ugyanolyannak kell lenni, mivel az id class nevek ugyan azok.
Ide feltöltöttem ameddig eljutottam:
nagyon köszönöm a segitséget!!!
igen, ID -ból csak 1 lehet az oldalon.
Class -ból több is.
Ha többet szeretnél ugyan azzal a scriptel meghívni akkor class -t használd.
Tehát $('#cd-dropdown') helyett $('.cd-select')
Nem néztem meg a feltöltött fájlt, de ha azért kell a JS, hogy onclick eseményre történjen valami, akkor így tudod ezt elérni classra:
$(document).ready( function () {
$(document).on("click", ".cd-select", function () {
submenu_megjelenitese(); // ide jön a kódod, ami a megjelenítést végzi
}
});
var cd_dd = $( '.cd-select' ); //minden elemet kiválasztani
//végigmenni a selecteken, és mindegyikre rátenni az effektet
for(var i = 0; i<cd_dd.length; i++){
$(cd_dd[i]).dropdown( {
gutter : 5,
stack : false,
delay : 100,
slidingIn : 100
} );
}
mivel itt nem csak egy elemet választunk ki, ezért nem lehet egyszerre rátenni a kupacra az effektet, végig kell menni és egyesével.
$(cd_dd[i]).dropdown( {})
itt mivel a dropdown az egy jQuery függvény, ezért kell jquerybe passzolni az elemet, és így meghívni
de akár így is lehetne:
$('.cd-select').each(function(){$(this).dropdown( {
gutter : 5,
stack : false,
delay : 100,
slidingIn : 100
} )});
Szóval egymás alá sikerült többet megcsinálnom, csak most meg a z-indexel van gond,mert ha lenyitom akkor az alatta lévő takarja.Próbáltam azt hogy a jquery.dropdown.js 63.sorában a + átírom - ra, amivel a z-indexes probléma meg is oldódott, de akkor meg ha a lenyiló részre viszem az egeret akkor nem változik át normálisan a narancssárgás szinre az összes lehetőség, hiába huzgálom felette az egeret...
chromeban műkszik így:
kiszedtem a js-ből a zindexeket
és indexben hozzáírtam ezt, miután a selectek átalakultak (ezért a .cd-sropdown>ul):
var i = 0; //számláló
$('.cd-dropdown>ul').each(function(){ //végigmegy a dropdownokon
i++;
$(this).css('z-index', 1000-i); //folyamatosan kisebb z-indexet kap, így alulról felfelé nyitogatva is a felső kerül előre
});
így nem lóg alá-fölé (de másik animációval lehet bagos lenne)
de én inkább úgy csinálnám, hogy ha kinyitott dd közben másikat nyitna, akkor a nyitottat becsukom
(sőt, ha nem dd-ra kattint, akkor csukoljon is be)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!