Hallo,

Helaas loop ik tegen een probleem aan bij het programmeren.
Op de site staan 10 tallen javascripts. Deze worden door een {if} functie opgeroepen waar nodig is.
Zelf heb ik een functie geschreven wat eigenlijk continu moet functioneren.
Als ik [code lang=js]<script>
$(function(){
$(window).scroll(function(){
console.log(window.scrollY)
if(window.pageYOffset >= 100 ) {
$(".nav").css({
position: "fixed",
top: 0
});
} else {
$(".nav").css({
position: "absolute",
top: 100
});
}

});
});
</script>
[/code] in de head of wel onder de juiste div plaats word de pagina wit. Dit omdat hij ergens mee een confict heeft. Nu wil ik deze via een {if} functie aanroepen. Is dit juist, of hoe kan ik dit anders doen?

Groetjes Jop
Alvast dank :)

Beste Frank,

Zo werkt het inderdaad. Op de grote en officiƫle site zitten heel veel scripts (javascript en php)
Als ik mijn code in de head of onder de juiste div zet, werk de hele site niet meer.
Ik ben gaan zoeken, en zie dat alle javascripts worden aangeroepen door bijvoorbeeld:

{if $LV_navbar} en dan de link naar mijn code{/if}


Mijn vraag is, hoe werkt dit, en is dit mogelijk wat ik wil?

Gr. Jop
Jop,

Ik ken deze structuur helemaal niet. Lijkt me van een template-engine af te komen?

staat dit binnen de php tags of tussen de HTML?
Beste Frank,

Dit wat hierboven staat staat binnen de head tags.
Het is inderdaad een template. Alles wat in de html gebeurt gaat langs de index.php.
Daarom werkt het javascript gedeelte niet. Alle scripts en css bestanden worden door de {if} aangeroepen.
Bij de zoomfunctie op afbeeldingen bijv.:

{if $LV_CLOUDZOOM==1}
<script type="text/javascript" src="{$http_pref}images/cloud-zoom.1.0.2.min.js"></script>
<script type="text/javascript" src="{$http_pref}images/cloud-zoom.css"></script>
{/if}


Nu denk ik zelf als ik mijn functie wil invoegen, ook met de {if} moet werken, omdat hij anders de site niet meer doet laden.
of juist buiten de if?

Kijk eens in je browser naar de bron van de pagina
Heb nu het volgende gedaan:
De code kan ik nu zonder dat de site blanco word onder de div plaatsen.
Het ziet er nu zo uit:

{literal}
 <script>
		// DOM Ready
	$(function(){
	$(window).scroll(function(){
        console.log(window.scrollY)
		if(window.pageYOffset >= 100 ) {
			$(".nav").css({
				position: "fixed",
				top: 0
			});
		} else {
			$(".nav").css({
				position: "absolute",
				top: 100
			});
		}

	});
}); 
	</script>
{/literal}


Ik ben al blij dat de site blijft draaien, alleen werkt de code niet :(
Jop ,

Plaats het volgende eens in je header?


<script type="text/javascript">
$(document).ready(function() {
  $(window).scroll(function(){
        console.log(window.scrollY)
        if(window.pageYOffset >= 100 ) {
            $(".nav").css({
                position: "fixed",
                top: 0
            });
        } else {
            $(".nav").css({
                position: "absolute",
                top: 100
            });
        }

    });
});
</script>


Dit voert jou functie uit als het document klaar is met laden.

het {if} statement heb je niet nodig tenzij je dit niet altijd wil uitvoeren.
Aan de syntax te zien draai je smarty template engine, en de laatste keer dat ik daar mee werkte deed een if in een template in essentie het zelfde als een if in php.

Let er alleen wel op dat je hem binnen je <head> plaatst maar buiten alle {if}{/if} blokken
Beste Jacco,

Bedankt voor de reactie. Helaas deed hij dit ook niet, maar heb het anders kunnen oplossen.
De javascriptcode heb ik tussen {literal} tags geplaatst, waardoor de site de code wel pakt.
Bedankt allemaal voor het meedenken :)

Groetjes Jop

Reageren