今天熟悉了jquery,学习了一些常用的函数,此外有做了两个小demo,两个实例的核心原理类似,下面是随手记录的笔记:
/* jquery 学习笔记 2014-12-04 */ 节点的插入: append()可以实现连缀: $("ul").append(li1).append(li2); 在节点的最前端插入(prepend): $("ul").prepend(li3); 创建元素可一次性添加属性完毕: var li1=$("<li class='oli' id='olid'>香蕉</li>"); 节点的删除: remove() 和 detach() 两者区别: remove()是彻底删除,删除后的节点再追加过来后,绑定的事件不能恢复, 而detach()删除后的节点会保留在jquery对象中,追加后绑定的事件和数据都还存在: $("ul li").click(function(){ //为每个li元素绑定了click事件 alert($(this).html()); }); var $deli=$("ul li:eq(0)").detach();//用detach删除 var $deli=$("ul li:eq(0)").remove();//用remove删除后,再追加事件不存在 $deli.appendTo("ul"); //再追加后绑定的事件依然存在 empty() 清空节点(只清空不删除)能清空元素中所有后代节点 $("ul").empty(); //<ul>中的<li>元素都被清理掉了 clone() 复制节点:看下面实例:点击后clone()节点,然后插入到ul $("ul li").click(function(){ //注意:只有点击“最初”被绑定click事件的li才能克隆,新克隆的li标签没有绑定事件,可用live解决 $(this).clone().appendTo("ul"); }); 注意此处存在绑定事件live()高低版本的问题 $("ul li").live("click",function(){ //用live()绑定的事件对于新创建或克隆的方法来说依然有效,而用click,bind绑定则不能 $("<li>newnewnew</li>").appendTo("ul"); //用创建节点的方式添加元素 $(this).clone().appendTo("ul"); //用克隆的方式创建节点 }); 节点替换 replaceWith() 和replaceAll() replaceWith() $("div").replaceWith("<li>这里之前是div</li>"); replaceAll() $("<li>现在用replaceAll</li>").replaceAll("div"); 节点包裹wrap() //元素包裹 wrap(), wrapAll(),wrapInner() $("ul").wrap("<div>wwww</div>");//用div包裹ul $("strong").wrap("<b></b>"); //用<b>包裹<strong>,单独包裹:每个<strong>都有<b>来包裹 wrapAll() $("strong").wrapAll("<b></b>"); //打包包裹,所有的<strong> 只用一个<b>来包裹 wrapInner() $("strong").wrapInner("<b></b>");//包裹<strong>的文本元素,效果为: <strong><b>原本为strong的文本现在被b包裹</b></strong> 属性操作: 设置属性:attr("属性名","属性值"); 同时设置多个属性:attr({"class":"classname","title":"titlename","name":"namename"}); 获取属性:attr("属性名") 删除属性:removeAttr("title"); 节点: children()方法指获取下属子节点,不获取孙子节点 next()同级相邻下一个 prev()同级相邻上一个 siblings()同级兄弟元素 parent()获取父元素 parents()获取所有父元素(祖先元素) closest()从本身元素开始向上查找,直到找到最近的一个祖元素。 小插曲:在设置css("属性名","属性值") 时,如果属性值带有“-”如:background-color,font-size,可写为驼峰形式:backgroundColor,fontSize 小插曲:对于超链接提示,<a>标签自带的title属性就是超链接提示。也可自己编写提超链接提示效果 以下是自己编写的tooltip源码: <DOCTYPE html> <html> <head> <style> </style> <script type="text/javascript" src="jquery-1.7.2.js"></script> </head> <body> <p><a href="#" title="这是我的超链接提示11" class="tooltip">提示1</a></p> <p><a href="#" title="这是我的超链接提示22" class="tooltip">提示2</a></p> <a href="#" title="这是自带提示">自带提示</a> <a href="#" title="这是自带提示">自带提示</a> </body> <script type="text/javascript"> $(function(){ $(".tooltip").mousemove(function(e){ var tit=$(this).attr("title"); //现获<a>标签的title属性,以备赋当文本节点给div显示 $("<div></div>").appendTo("body").html(tit); //创建提示窗div,并赋值innerHTML $("div").css({"position":"absolute","background":"red","top":e.pageY+15+"px"}); //设置div提示窗样式,并跟随鼠标 }).mouseout(function(){ $("div").remove(); //鼠标移出删除div提示窗 }); }) </script> </html> 以下是根据上面代码更改的一个图片跟随放大显示效果: <DOCTYPE html> <html> <head> <style> ul{ 500px; margin: 0 auto; } li{ list-style-type: none; float: left; margin: 10px; } img{ 100px; height:100px; } #img1{ 300px; height: 300px; } </style> <script type="text/javascript" src="jquery-1.7.2.js"></script> </head> <body> <div id="d1"></div> <ul> <li><a href="1.jpg" class="tooltip"><img src="1.jpg" alt=""></a></li> <li><a href="2.jpg" class="tooltip"><img src="2.jpg" alt=""></a></li> <li><a href="3.jpg" class="tooltip"><img src="3.jpg" alt=""></a></li> <li><a href="4.jpg" class="tooltip"><img src="4.jpg" alt=""></a></li> </ul> </body> <script type="text/javascript"> $(function(){ $("a").mousemove(function(e){ var lianjie=$(this).attr("href"); $("<div><img src='"+this.href+"' id='img1'/></div>").appendTo("body"); $("div").css({"position":"absolute","background":"red","top":e.pageY+15+"px","left":e.pageX+15+"px"}); }).mouseout(function(){ $("div").remove(); }); }) </script> </html>