国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

在多個頁面使用同一個HTML片段的代碼

2019-11-20 23:55:05
字體:
來源:轉載
供稿:網友

問題描述
有一個比較復雜的HTML片段(A),如果把這個HTML片段嵌入到其他頁面中(B,C,D....)。
問題的關鍵是在HTML片段中有大量的JavaScript邏輯需要處理,比如說分頁,點擊事件響應等。

對于這個問題,我們用一個簡單的例子來說明:
“頁面上有一個按鈕,點擊此按鈕引入一個HTML片段,此HTML片段中有分頁按鈕。”

1. 使用IFrame
主頁面,點擊一個按鈕向頁面引入一個IFrame:

復制代碼 代碼如下:

    <script type="text/javascript">
        $(function() {
            $("#clickToInsert").click(function() {
                $("#placeholder").html('<iframe src="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" style="display: none;">
    <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" style="display: none;">
    <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" style="display: none;">
    <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的方式是我們所推薦的。
下載源代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄垣县| 名山县| 三门县| 太原市| 六安市| 新乡县| 连江县| 海丰县| 长顺县| 娱乐| 长海县| 临朐县| 阿坝县| 和政县| 枞阳县| 图木舒克市| 拉孜县| 封开县| 南丹县| 福建省| 尼木县| 左权县| 通河县| 鹤庆县| 鱼台县| 筠连县| 峨山| 江达县| 西贡区| 惠东县| 勃利县| 张家港市| 菏泽市| 霸州市| 九寨沟县| 砀山县| 交口县| 武城县| 桑植县| 息烽县| 获嘉县|