Korzystam ze struktury aplikacji internetowych (Symfony 1.3.6), która jest zgodna ze wzorcem MVC.
Warstwa widoku składa się z dekoratora szablonu. Plik szablonu może również zawierać inne szablony - oto, co powoduje moje pytanie.
Zakładając, że istnieje strona (nazwijmy go „strona”), która składa się z kilku szablonów - (kod został refactored się więc „szablony podrzędne” mogą być wykorzystywane na innych stronach
.W wyniku refaktoryzacji małe szablony - używane przez główny szablon - ("strona główna" w naszym przykładzie) muszą zawierać kod związany z jQuery:
pozwala na to, że szablon strony głównej używa 2 'sub szablony:
- Szablon A
- szablon B
Zakładamy, że szablon A składa się z poniższym fragmencie:
<div id="field1">This is field 1</div>
<script type="text/javascript">
$(document).ready(function(){
$('#field1').click(function(){
alert('Field 1 clicked!');
});
</div>
</script>
Zakładamy, że szablon B składa się z poniższym fragmencie:
<div id="field2">This is field 2</div>
<script type="text/javascript">
$(document).ready(function(){
$('#field2').click(function(){
alert('Field 2 clicked!');
});
</div>
</script>
teraz szablonu 'głównej' wygląda tak:
<html>
<head>
<title>Multiple jQuery snippet test</title>
<script src="path_to_jquery"></script>
</head>
<body>
<div>include_template('template A')</div>
<div>include_template('template B')</div>
</body>
</html>
Próbowałem tego - i ku mojemu zdziwieniu, działało to tak, że był tylko jeden $ (dokument) .ready() w scalonej, końcowej stronie ("strona główna).
Nie jestem pewien, czy moja przeglądarka (Firefox), czy framework sieciowy (Symfony) dokonały "czyszczenia" za kulisami.
Moje pytanie brzmi: jaki jest najlepszy sposób postępowania, jeśli chcesz ograniczyć funkcję jQuery do "małych szablonów wielokrotnego użytku", które można ponownie wykorzystać w celu zapewnienia tej samej funkcjonalności na różnych stronach?
BTW, mam nadzieję, że nikt nie sugeruje pisania wtyczki jQuery, ponieważ to nie jest to, o czym mówię.
Czy to znaczy, że masz scalony wywołanie funkcji lub, że tylko jedno pole ma swoje zdarzenie click? Jeśli chcesz mieć pewność co do czyszczenia firefox, spróbuj wget, twoja strona nie zostanie zmodyfikowana. – greg0ire