我正在使用一個遵循MVC模式的Web應用程序框架(Symfony 1.3.6)。
視圖層由模板裝飾的。該模板文件也可能包含其他模板 - 這是什麼引起我的問題。
假設有一個頁面(讓稱它爲「主頁」),這是由幾個模板 - (代碼已經重構了這樣的「子模板」可以在其他頁面中使用
。作爲重構的結果,主模板使用的小模板(在我們的例子中爲'homepage')需要包含jQuery相關代碼。
可以說主頁模板使用2'sub模板:
- template A
- B模版
假設該模板包含以下代碼段:
<div id="field1">This is field 1</div>
<script type="text/javascript">
$(document).ready(function(){
$('#field1').click(function(){
alert('Field 1 clicked!');
});
</div>
</script>
假設B模版包含以下代碼段:
<div id="field2">This is field 2</div>
<script type="text/javascript">
$(document).ready(function(){
$('#field2').click(function(){
alert('Field 2 clicked!');
});
</div>
</script>
現在模板 '主頁'看起來是這樣的:
<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>
我試過這個 - 對我的驚喜,它的工作原理是在合併的最終頁面('主頁)中只有一個$(document).ready()。
我不知道如果我的任何瀏覽器(Firefox)或Web框架(Symfony的),做了一些「清理」的幕後。
所以我的問題是,什麼是前進,如果你想重構jQuery的功能集成到可重複使用,以提供不同的頁面相同的功能「小的可重用模板」的最佳方式?
順便說一句,我希望沒有人建議寫一個jQuery插件,因爲這是SO不是我說的。
你的意思是你有一個合併後的函數調用或只有一個字段有其click事件?如果你想確定有關Firefox的清潔,請嘗試wget,你的頁面不會被修改。 – greg0ire 2010-08-21 16:24:51