na začiatku musím priznať svoje vedomostio programovaní je celkom základná. Nechápem všetko, takže moja otázka môže vyzerat trochu klamlivo, no napriek tomu sa moje nápady vyčerpali a musím sa pýtať.
Použil som výukový program Slide Elements a pridal som niekoľkoposuvné Div do môjho webu, všetko funguje dobre, ale v tomto tutorial autor použil prvok gombíka vo vnútri rodičov div a na kliknutie vnútorné div diapozitívy. Chcem použiť prvok li z mojej navigačnej sekcie, ktorá je mimo divov, ale neviem, ako zmeniť kód skriptu, aby sa zachovala animácia v tejto div. V zásade to vyzerá:
HTML:
<ul id="navigation">
<li class="about"><a title="A" href="#" > </a></li>
<li class="search"><a title="P" href="#" ></a></li>
<li class="photos"><a title="G" href="#" ></a></li>
<li class="rssfeed"><a title="U" href="#" ></a></li>
<li class="contact"><a title="K" href="#" ></a></li>
</ul>
<div id="IDcontent" class="slide" >
<button>slide it</button>
<div class="inner" style="margin-left: 100%"> test </div>
</div>
Podarilo sa mi zmeniť kód skriptu, že prvok li spustí akciu kliknutia, nie tlačidlo, ale po kliknutí nie je posunuté div, ale nasníma ďalší prvok li.
KÓD SCRIPT:
<script>
$(document).ready(function() {
$("#navigation li").click(function() {
var $marginLefty = $(this).next();
$marginLefty.animate({
marginLeft: parseInt($marginLefty.css("marginLeft"),10) == 0 ?
$marginLefty.outerWidth() :
0
});
});
});
</script>
Akékoľvek návrhy?
Veľká vďaka!
odpovede:
0 pre odpoveď č. 1Vzhľadom na tento riadok kódu,
var $marginLefty = $(this).next();
ďalší prvok li po tom, na ktorý bol kliknutý, jeanimovaný, pretože neskôr urobíte $ marginLefty.animate (). Ak chcete animovať div, mali by ste nastaviť marginLefty na prvok div. Takže nahraďte tento riadok:
var $marginLefty = $(".inner");
Ak chcete zistiť, na kto bol klepnutý, môžete to urobiť
// $(this) refers to the element that was clicked
$liClass = $(this).attr("class")
vnútri obsluhy kliknutí. Potom môžete zmeniť obsah databázy div, na ktorej bol klepnutý, a pomocou funkcie html (). Napríklad,
var content;
if($liClass == "about"){
content = "about clicked";
}
else if($liClass == "search"){
content = "search clicked";
}
//more code here
//more code here
$marginLefty.html(content);
Viac informácií o .attr () a .html () nájdete tu: http://api.jquery.com/attr/ a http://api.jquery.com/html/
0 pre odpoveď č. 2
Vyskúšaj tento:
$(document).ready(function() {
$("#navigation li").click(function() {
var $marginLefty = $("a", this);
$marginLefty.animate({
marginLeft: parseInt($marginLefty.css("marginLeft"),10) == 0 ?
$marginLefty.outerWidth() :
0
});
});
});
0 pre odpoveď č. 3
Ak to chápu správne, chcete mať prvok LI, aby urobil to isté, čo robí prvok tlačidla? Môžete jednoducho spustiť kliknutie na tlačidlo:
$(document).ready(function() {
$("#navigation li").click(function() {
$("#IDcontent").find("button").trigger("click");
});
});
Váš prvok tlačidla bude musieť zostať nastr. Tým sa v podstate spustí ľubovoľný kód pripojený k udalosti kliknutia tlačidla - kedykoľvek kliknete na ľubovoľný z vašich prvkov LI.Môžete nastaviť, aby pracoval iba na prvom prvku zoznamu zmenou voliča:
$("#navigation li.about").click(function() {
...
});
To pripojí túto funkciu iba k prvku li class = "about".
To funguje, ak plánujete opustiťna vašej stránke. Môžete jednoducho skryť tlačidlo v CSS, ale to je trochu neplodné Ak sa rozhodnete odstrániť tlačidlo úplne, jednoducho nájsť kód Javascript, že tlačidlo používa to bude vyzerať takto:
$("#IDcontent button").click(function(){ ... });
alebo niečo podobné. Potom jednoducho presuňte tento kód do udalosti kliknutia tlačidla do udalosti kliknutia pre prvok zoznamu.