為我的博客園做一個多彩tag


在一些網站上看到多彩tag,覺得很好看,就像着給自己的博客做一個,做之前是這樣的

單一且枯燥,先來看看這里的結構代碼

於是,為了做出多彩字,我在博客的自定義js里添加了這樣的代碼

 1 $(".catListTag a").each(function(index,element){
 2     //color
 3     var color = "";
 4     for(var i = 0;i<3;i++){
 5         var d = Math.floor(Math.random() * 255);
 6         var h = Number(d).toString(16);
 7         if(h.length<2){
 8             h = "0" + h;
 9         }
10         color += h;
11     }
12     color = "#" + color;
13     //console.log(color);
14     $(this).css("color",color);
15     //size
16     var s = Math.floor(Math.random()*5+12);
17     var size = s + "px";
18     $(this).css("font-size",size);
19 });

很不幸,沒有成功,經過調試發現,選擇器$(".catListTag a")根本沒有查找到元素,這是怎么回事呢?通過翻看博客園的部分源代碼找到了原因

沒錯,就像你看到的這樣,這一塊節點是在ajax請求完成之后通過js動態添加上去的,而我的自定義js代碼,絕對要在ajax請求完成之前就執行完了,當然就查找不到任何匹配的元素,怎么辦呢?

這個問題困擾了我很久,博客園的代碼我是不可能改的,不然在后面稍微加點代碼就OK了,可事實是不能改。最后,得高人指點(QQ群里的不好留名),想到可以覆寫回調方法,但這里回調方法是匿名方法,所以不能直接覆寫回調方法,只有間接的覆寫loadBlogSideBlocks方法,於是我講原來的loadBlogSideBlocks的代碼拷貝出來寫在自定義的js里,方法結束前加上自己的代碼,終於成功了

 1 function loadBlogSideBlocks() {
 2     var n = [];
 3     document.getElementById("RecentCommentsBlock") && n.push("ShowRecentComment");
 4     document.getElementById("TopViewPostsBlock") && n.push("ShowTopViewPosts");
 5     document.getElementById("TopFeedbackPostsBlock") && n.push("ShowTopFeedbackPosts");
 6     document.getElementById("TopDiggPostsBlock") && n.push("ShowTopDiggPosts");
 7     $.ajax({url: "/mvc/Blog/GetBlogSideBlocks.aspx",data: {blogApp: currentBlogApp,showFlag: n.join(",")},type: "get",dataType: "json",success: function(n) {
 8             n && (n.RecentComments ? $("#RecentCommentsBlock").html(n.RecentComments) : $("#recent_comments_wrap").hide(), n.TopViewPosts ? $("#TopViewPostsBlock").html(n.TopViewPosts) : $("#topview_posts_wrap").hide(), n.TopFeedbackPosts ? $("#TopFeedbackPostsBlock").html(n.TopFeedbackPosts) : $("#topfeedback_posts_wrap").hide(), n.TopDiggPosts ? $("#TopDiggPostsBlock").html(n.TopDiggPosts) : $("#topdigg_posts_wrap").hide())
 9         }})
10         
11         //my code
12         
13         $(".catListTag a").each(function(index,element){
14             //color
15             var color = "";
16             for(var i = 0;i<3;i++){
17                 var d = Math.floor(Math.random() * 255);
18                 var h = Number(d).toString(16);
19                 if(h.length<2){
20                     h = "0" + h;
21                 }
22                 color += h;
23             }
24             color = "#" + color;
25             //console.log(color);
26             $(this).css("color",color);
27             //size
28             var s = Math.floor(Math.random()*5+12);
29             var size = s + "px";
30             $(this).css("font-size",size);
31         });
32 }

最后效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM