聯系信息

                        jquery自動提取內容主題生成目錄并實現點擊跳轉

                        2020-02-25 10:01 By 致遠 1341
                        當前位置: 企業網站建設 > Jquery > jquery自動提取內容主題生成目錄并實現點擊跳轉

                        當頁面內容太多的時候,一定會有各級標題,而太長的內容對于用戶來說,訪問很不方便,如果能添加目錄并實現點擊跳轉,則用戶體驗大大提升。

                        從前端的角度來考慮,要解決這個問題其實很簡單,我們只需要創建一些節點,或者錨文本,再把鏈接指向到該處即可。所以,我們可以在后臺創建目錄,并分配對應節點或錨文本。但這樣做很不好:工作量太大且很不方便。于是就想有沒有辦法自動提取內容中的主題用作目錄,并實現呢?答案是肯定的,下面我們就來看一下,用jquery如何實現自動提取內容主題生成目錄并實現點擊跳轉:

                        首先,在后臺編輯內容的時候,需要有對應的主題可以提取

                        本例以h標題為提取根據。一般h1為文章標題,所以內容部分中應該是h2、h3、h4,這些在后臺編輯內容的很容易實現,并且從優化的角度來說,也應該這樣做,所以沒有多余的工作要做。以Kindeditor為例,先選中要設置為標題的內容,設置成標題即可,如下圖所示:

                        Kindeditor設置標題

                        然后,在對應的前端頁面嵌入以下js語句


                        target = $("#article .fl");//需要提取目錄的內容所在包裹器,如果要進行相對定位,建議選擇上一級dom
                        $(document).ready(function() {
                            GenerateContents();//提起目錄并實現點擊跳轉
                        });
                        function GenerateContents() {
                            var num = 0;//第x個目錄 用于jquery跳轉實現
                            var content = "<div id=quick>目錄";//創建的目錄的dom結構
                            content += '<ul>';
                            $("h2").each(function(){//遍歷內容中的所有h2標簽 作為一級目錄
                                content += "<li>"+GenerateA(num,$(this).text());
                                $(this).before(GenerateLabel(num));
                                num++;
                                var second = $(this).nextUntil("h2","h3");
                                if (second) {
                                    content += "<ul>";
                                    second.each(function(){//變量內容中的所有h3標簽 作為二級目錄
                                        content += "<li>"+GenerateA(num,$(this).text())+"</li>";
                                        $(this).before(GenerateLabel(num));
                                        num++;
                                    });
                                    content += "</ul>";
                                };
                                content += "</li>";
                            });
                            content += "</ul></div>";
                            target.append(content);//插入目錄到頁面中
                        }
                        function GenerateLabel(num){
                            var a = "<a name = 'label" + num + "'></a>";
                            return a;
                        }
                        function GenerateA(num ,text){
                            var ss = "<a data-i='" + num +"'>" + text + "</a>";
                            return ss;
                        }
                        //實現點擊跳轉
                        $('#quick a').live('click',function(){
                            var _obj=$(this).attr('data-i');
                                _obj=$('a[name=label'+_obj+']');
                            var _top=_obj.position().top;
                                _top-=80;
                            $('html,body').animate({scrollTop:_top},500);
                        })


                        到此,提取內容主題生成目錄并實現點擊跳轉就已經實現了。當然,你應該還要結合css來進行定位,比如把目錄設置為固定(fixed)定位。

                        #quick{ position: fixed; left: 20px; top:140px; text-align: right;}
                            #quick{ font-size: 18px; color: #999;}
                            #quick a{ font-size: 14px; padding: 10px 0; font-weight: bold; cursor: pointer; color: #333;}
                            #quick a:hover{ color: #fd5050;}
                                #quick li li a{ font-weight: normal; color: #666;}

                        效果圖如下:

                        提取內容主題生成目錄并實現點擊跳轉效果


                        © 致遠 2020-02-25,原創內容,轉載請注明出錯:jquery自動提取內容主題生成目錄并實現點擊跳轉

                        留下您的評論

                        > 人人爽人人澡人人高潮_免费无码国产V片在线观看_18禁裸乳无遮挡免费观看_国产99在线 | 欧美_中文字幕无码无码专区 成.人.大.片在线观看 中文字幕无码日韩专区免费 无码精品人妻一区二区三区漫画 深夜A级毛片免费视频 正在播放重口老熟女露脸 出租屋勾搭老熟妇啪啪 日韩高清国产一区在线 欧美人与动牲交A免费观看 狠狠亚洲婷婷综合色香五月 波多野结衣一二三区AV高清