<html> <head runat="server"> <script src="http://code.jquery.com/jquery-1.5.js"></script> <script> $(function () { $("<div>這是我自建的 HTML </div>").appendTo($("#sp")); }); </script> </head> <body> <form id="form1" runat="server"> <div> <span id="sp"></span> </div> </form> </body> </html>
以上面的程式為例:使用 $("<div>這是我自建的 HTML </div>"),建立了一個 <div> 物件,並將這物件指定擺放到 <span id="sp"></span>。
甚至更進一步,可以在我們自建的 HTML 裡,事先設定 jQuery 的變化。舉裡來說:
<html> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-1.5.js"></script> <script> $(function () { $("<div>這是我自建的 HTML </div><div class='cs1'>指定顏色一</div><div class='cs2'>指定顏色二</div>").filter(".cs1").css("color","red").end().filter(".cs2").css("color","green").end().appendTo($("#sp")); }); </script> </head> <body> <form id="form1" runat="server"> <div> <span id="sp"></span> </div> </form> </body> </html>
在自建的 HTML 中,針對
<div>這是我自建的 HTML </div>
<div class='cs1'>指定顏色一</div>
<div class='cs2'>指定顏色二</div>
分別針對 class=cs1 與 class=cs2 設定了 red 與 green 顏色,最後再塞到 <span> 裡。
.filter(".cs1").css("color","red").end().filter(".cs2").css("color","green").end().appendTo($("#sp"))
在實作的過程中,自己不小心將自建的 HTML 寫成:
原來,我把它寫成巢狀式(nested)的 <div> 了。它結果變成:
納悶的是,即便我寫成了巢狀式的語法,那又有什麼關係?可它就偏偏不如我願。後來發現了自己疏忽的地方,在於沒搞清出 jQuery 的 .filter() 與 .find() 的區別。這裡我很讚賞【钱途无梁】的文章「jQuery基础---filter()和find()」,裡面提的範例簡單明瞭。而我簡單的分別心得則是:
filter() :是找自己的兒子輩(就只到兒子輩而已)。
find() :是找自己的孫子輩(不含兒子輩,但含曾孫、玄孫...)
所以,即便是面臨巢狀的情形,也不怕
<html> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-1.5.js"></script> <script> $(function () { $("<div>這是我自建的 HTML </div><div class='cs1'>指定顏色一<div class='cs2'>指定顏色二</div></div>").filter(".cs1").css("color", "red").end().filter(".cs2").css("color", "green").end().find(".cs1").css("color","red").end().find(".cs2").css("color","green").end().appendTo($("#sp")); }); </script> </head> <body> <form id="form1" runat="server"> <div> <span id="sp"></span> </div> </form> </body> </html>
節錄【钱途无梁】的範例:
<div class="css"> <p class="rain">測試1</p> </div> <div class="rain"> <p>測試2</p> </div>
如果執行:
var $find = $("div").find(".rain"); alert($find.html());
則結果是:
如果執行:
var $filter = $("div").filter(".rain"); alert($filter.html());
結果則是:
參考 01. jQuery基础---filter()和find()
沒有留言:
張貼留言