九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何用Javascript實(shí)現(xiàn)自動為頁面添加目錄結(jié)構(gòu) | Cafe Stop

當(dāng)頁面內(nèi)容比較多的時候,清晰的頁面結(jié)構(gòu)加目錄導(dǎo)航能幫助用戶方便的找到所需要的信息,接下來介紹如何利用jQuery自動為頁面生成目錄結(jié)構(gòu)。網(wǎng)上其實(shí)已經(jīng)有好多jQuery的插件可以實(shí)現(xiàn)同樣的目的,我的這邊文章就介紹過其中一個[通過jQuery自動給wordpress博文添加目錄結(jié)構(gòu)],而本文還有個目的是介紹其是如何實(shí)現(xiàn)的并順帶介紹創(chuàng)建jQuery插件的一些注意點(diǎn)。

下面的代碼片斷是典型的jQuery插件的結(jié)構(gòu),這里有2點(diǎn)值得注意:

  1. 因?yàn)槭莏Query實(shí)例擴(kuò)展,所以是jQuery.fn.extend,如果是在jQuery類上擴(kuò)展,則應(yīng)該使用jQuery.extend。
  2. 使用了自調(diào)用的匿名函數(shù),這樣處理的好處是a)保證該javascript文件被載入后就被調(diào)用;b)保證內(nèi)部使用$代替jQuery而不會跟其它模塊沖突。
  1. (function($){
  2. $.fn.extend({
  3. plugin: function(options){
  4. //實(shí)現(xiàn)代碼
  5. }
  6. });
  7. )(jQuery);

如何自動添加目錄結(jié)構(gòu)(前提是頁面本身具有良好的組織結(jié)構(gòu),正確使用H1,H2,H3等Heading標(biāo)簽)。思路是這樣的:

  1. 在所有的H1,H2和H3標(biāo)簽前添加<span>元素并設(shè)定其Id,使得可以通過<a>元素定位到該Heading標(biāo)簽。
  2. 構(gòu)建如<ul><li><a/></li><li><a/></li></ul>形式的目錄結(jié)構(gòu),并是所有<a>標(biāo)簽分別指向?qū)?yīng)的<span>。
  3. 將該目錄結(jié)構(gòu)放入用戶指定的HTML元素中。

如下面代碼所示:

  1. (function($){
  2. $.fn.extend({
  3. mytoc: function(options){
  4. //默認(rèn)參數(shù)
  5. var defaultParams = {
  6. prefix:'toc', //生成目錄結(jié)構(gòu)中元素的class屬性的前綴
  7. selectors:'h1, h2, h3', //頁面由h1,h2,h3來組織
  8. context:'body' //處理body標(biāo)簽下面的selectors
  9. };
  10. //用戶可以通過傳入自定義參數(shù)來覆蓋默認(rèn)設(shè)置
  11. var opts = $.extend({}, defaultParams, options);
  12. //獲取所有需要加入到目錄結(jié)構(gòu)中的“頭”元素
  13. var headings = $(opts.selectors, opts.context);
  14. //在所有的“頭”元素前加上錨標(biāo)簽,如<span id="toc0">
  15. headings.each(function(i, heading){
  16. $('<span/>').attr('id', opts.prefix + i).insertBefore(heading);
  17. });
  18. //必須返回$(this).each(function(){}); 只有這樣才能兼容jQuery的$.a().b().c()這種連續(xù)調(diào)用
  19. return $(this).each(function(i, toc){
  20. //構(gòu)建目錄結(jié)構(gòu)
  21. var ul = $('<ul/>').attr('id', 'toc');
  22. headings.each(function(i, heading){
  23. var a = $('<a/>').attr('href', '#'+opts.prefix + i).text($(heading).text());
  24. var li = $('<li/>').addClass(heading.tagName.toLowerCase() + '-' + opts.prefix).append(a);
  25. ul.append(li);
  26. });
  27. //將生成的目錄結(jié)構(gòu)ul對象添加到用戶指定的HTML對象中
  28. $(toc).html(ul);
  29. });
  30. }
  31. });
  32. })(jQuery);

如何使用:

  1. <html>
  2. <head>
  3. <title>Test TOC</title>
  4. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  5. <script type="text/javascript" src='jquery.mytoc.js'></script>
  6. </head>
  7. <body>
  8. <div id="toc"></div>
  9. <h1>Heading 1</h1>
  10. <h2>Sub Heading 1</h2>
  11. <h2>Sub Heading 2</h2>
  12. <h2>Sub Heading 3</h2>
  13. <h1>Heading 2</h1>
  14. <h2>Sub Heading 1</h2>
  15. <h2>Sub Heading 2</h2>
  16. <h2>Sub Heading 3</h2>
  17. <h1>Heading 3</h1>
  18. <h2>Sub Heading 1</h2>
  19. <h2>Sub Heading 2</h2>
  20. <h2>Sub Heading 3</h2>
  21. <h2>Sub Heading 4</h2>
  22. <script>
  23. jQuery('div#toc').mytoc();
  24. </script>
  25. </body>
  26. </html>

源代碼已經(jīng)放到github上 – mytoc。真正將上述代碼用到產(chǎn)品環(huán)境自動生成目錄結(jié)構(gòu)還需要編寫相應(yīng)的CSS代碼,而且目錄結(jié)構(gòu)的層次關(guān)系還需要通過CSS代碼體現(xiàn)出來。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何合理優(yōu)化網(wǎng)頁JavaScript
jQuery tablesorter使用一二三降序排列
jQuery+CSS 打造動態(tài)下滑菜單效果
HTML5+JS手機(jī)web開發(fā)之jQuery Mobile初涉
$(function() {})和$(document).ready(function(){ })
jQuery之$(document).ready()使用介紹
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服