亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何在多個頁面使用同一個HTML片段

標簽:
Html5


文章截图 - 更好的排版
下载源代码

问题描述
有一个比较复杂的HTML片段(A),如果把这个HTML片段嵌入到其他页面中(B,C,D....)。
问题的关键是在HTML片段中有大量的JavaScript逻辑需要处理,比如说分页,点击事件响应等。

对于这个问题,我们用一个简单的例子来说明:
“页面上有一个按钮,点击此按钮引入一个HTML片段,此HTML片段中有分页按钮。”

1. 使用IFrame
主页面,点击一个按钮向页面引入一个IFrame:

    <script type="text/javascript">        $(function() {            $("#clickToInsert").click(function() {                $("#placeholder").html('<iframe class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="iframe.htm"></iframe>');            });        });    </script>    <input type="button" id="clickToInsert" value="Insert HTML" />    <div id="placeholder">    </div>

IFrame页面,模拟分页的情况:

    <script type="text/javascript">        $(function() {            var parent = $("#complex_page_segment");            $(".previous", parent).click(function() {                $(".content", parent).html("Previous Page Content");            });            $(".next", parent).click(function() {                $(".content", parent).html("Next Page Content");            });        });    </script>    <div id="complex_page_segment">        <input type="button" value="Previous Page" class="previous" />        <input type="button" value="Next Page" class="next" />        <div class="content">            Page Content</div>    </div>



2. AJAX返回页面片段,并注册事件
注:我们通过textarea来模拟返回的HTML片段。

    <script type="text/javascript">        $(function() {            $("#clickToInsert").click(function() {                $("#placeholder").html($("#clone").val());                var parent = $("#complex_page_segment");                $(".previous", parent).click(function() {                    $(".content", parent).html("Previous Page Content");                });                $(".next", parent).click(function() {                    $(".content", parent).html("Next Page Content");                });            });        });    </script>    <input type="button" id="clickToInsert" value="Insert HTML" />    <div id="placeholder">    </div>    <textarea id="clone" >    <div id="complex_page_segment">        <input type="button" value="Previous Page" class="previous" />        <input type="button" value="Next Page" class="next" />        <div class="content">Page Content</div>    </div>    </textarea>


由于我们需要在多个页面引用同一个HTML片段,这种方法导致大量事情处理被重复性的拷贝粘贴,明显我们需要将公共的方法提取出来。

3. AJAX返回页面片段,并调用页面片段中的函数注册事件

    <script type="text/javascript">        $(function() {            $("#clickToInsert").click(function() {                $("#placeholder").html($("#clone").val());                init_complex_page_segment();            });        });    </script>    <input type="button" id="clickToInsert" value="Insert HTML" />    <div id="placeholder">    </div>    <textarea id="clone" >    <script type="text/javascript">        function init_complex_page_segment() {            var parent = $("#complex_page_segment");            $(".previous", parent).click(function() {                $(".content", parent).html("Previous Page Content");            });            $(".next", parent).click(function() {                $(".content", parent).html("Next Page Content");            });        }    </script>    <div id="complex_page_segment">        <input type="button" value="Previous Page" class="previous" />        <input type="button" value="Next Page" class="next" />        <div class="content">Page Content</div>    </div>    </textarea>


其实我们可以更进一步,完全没必要手工调用这个函数,而是可以在返回的HTML片段中让其自动执行。

4. AJAX返回页面片段,其事件自动注册

    <script type="text/javascript">        $(function() {            $("#clickToInsert").click(function() {                $("#placeholder").html($("#clone").val());            });        });    </script>    <input type="button" id="clickToInsert" value="Insert HTML" />    <div id="placeholder">    </div>    <textarea id="clone" >    <script type="text/javascript">        $(function() {            var parent = $("#complex_page_segment");            $(".previous", parent).click(function() {                $(".content", parent).html("Previous Page Content");            });            $(".next", parent).click(function() {                $(".content", parent).html("Next Page Content");            });        });    </script>    <div id="complex_page_segment">        <input type="button" value="Previous Page" class="previous" />        <input type="button" value="Next Page" class="next" />        <div class="content">Page Content</div>    </div>    </textarea>


最后一种方法和第一种IFrame的方式是我们所推荐的。



點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消