Poradie nacitavania skriptov a volania jquery
- tomas.stofik
- Člen | 33
Zdravim Vas,
Riesim uz asi druhy tyzden v akom poradi usporiadat nalinkovane jquery
skripty a volanie jquery kodu v nette:
konkretne pouzivam nette.ajax, history, google maps, highlight plugin a zurb
foundation.
Pokial requesty niesu ajaxove tak s nicim nieje problem no pokial su ajaxove
tak sa deju veci ako napriklad nenacitanie google maps, plugin na zmenu syntaxe
v tagu code sa nezmeni atd atd…skusal som menit poradie skriptov ale
zbytocne. Co sa jquery tyka tak som zaciatocnik a v ramci svojich vedomosti som
vyskusal vsetko co som vedel no ani google velmi nepomohol. Ak sa niekto stretol
s niecim podobnym, prosim poradte Mi. Myslim si ze je to len drobnost no
nemozem na to prist. Dakujem vsetkym :)
- Jiří Nápravník
- Člen | 710
Podle mě problém je v tom, že máš ten skript někde a to nepoíláš v té ajaxové odpovědi. Například, máš v nějakým externím javascriptu načtení google mapy. A když zavoláš ajaxový požadavek, tak sice vrátíš napříkald překreslenou nějakou část, ale ta mapa se logicky nenačte, protože ona „se načetla při tom minulém/prvním requestu“
Řešení? Pokud píšeš, že používáš nette.ajax, tak všechno co máš v těch různých js a chceš mít i po ajaxu, tak dej do load eventu nějak takto:
(function($, undefined) {
$.nette.ext({
load: function (xhr, settings) {
//tady inicializaci všeho co potřebujes
}
});
})(jQuery);
- tomas.stofik
- Člen | 33
Tu je kod z html dokumentu:
<script src=„js/jquery-2.1.1_min.js“></script>
<script src=„js/nette.ajax.js“></script>
<script src=„js/history.ajax.js“></script>
<script src=„js/foundation.min.js“></script>
<script src=„js/extensions/spinner.ajax.js“></script>
<script src=„js/masonry.pkgd_min.js“></script>
<script src=„js/highlight/highlight.pack.js“></script>
<script
src=„https://maps.googleapis.com/maps/api/js?v=3.exp“></script>
<script src=„js/main.js“></script>
<div id=„snippet–scripts“>
<script></script>
<script>
$(document).ready(function() {
$('html, body').animate( { scrollTop: $('#top').offset().top } , 1000);
} );
</script>
<script>
// This example adds a marker to indicate the position
// of Bondi Beach in Sydney, Australia
function initialize() {
var mapOptions = {
zoom: 18,
center: new google.maps.LatLng(48.2183511,16.320684),
disableDefaultUI: true
}
var map = new google.maps.Map(document.getElementById('map'),
mapOptions);
var image = 'img/marker1.png';
var myLatLng = new google.maps.LatLng(48.2183511,16.320684);
var beachMarker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image
} );
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</div>
Toto je kod z: main.js
// Syntax highlight
$(document).ready(function() {
$(‚code‘).each(function(i, e) { hljs.highlightBlock(e) } );
} );
// Open link in new window
$(‚a[rel=„external“]‘).click(function() {
window.open($(this).attr(‚href‘));
return false;
} );
$(function () {
// Hiding with JavaScript
$(‚.js‘).show();
$(‚.nojs‘).hide();
// Nette
$.nette.init();
// ZURB Foundation
$(document).foundation();
// Spinner
$.nette.ext(‚spinner‘);
$.nette.ext( {
load: function (xhr, settings) {
//////////////////////////////////////////////////////////////////////////// Init start
// Syntax highlight
$(‚code‘).each(function(i, e) { hljs.highlightBlock(e) } );
//////////////////////////////////////////////////////////////////////////// Init end
}
} );
} );
Tie google mapy som nerozbehal no code musim uvadzat pred aj po inicializacii nette a jedine vtedy to funguje aj po ajax requeste aj po obnoveni.
Som fakt lama do ajaxu a neviem ci sa nepustam do niecoho na co zatial nemam :(
Dakujem za vsetky rady