jQuery学习笔记(二)
二、管理jQuery包装集
1.创建新的元素
使用HTML DOM 创建元素
var select=document.createElement("select");
select.option[0]=new Option("加载项","value1");
select.option[1]=new Option("加载项","value2");
select.size="2";
var object=testDiv.appendChild(select);
2.使用jQuery创建元素
jQuery内部使用document.createElement创建元素:
$("<div/>").css("border","solid 1px #ff0000").html("动态创建的div").appendTo(testDiv);
jQuery内部使用innerHTML创建元素:
$("<div style=\"border:solid 1px #ff0000\">动态创建的div</div>").appendTo(testDiv);
3.将元素添加到对象上
$( function(){testDiv.innerHTML+="<div style=\"border:solid 1px #ff0000\">使用$(function)方法</div>";});
4.管理jQuery包装集元素
过滤
eq(index) 获取匹配的第二个元素:$("p").eq(1)
filter(expr) 保留带有select类的元素:$("p").filter(".selected")
filter(fn) 保留子元素中不含有ol的元素:{$("div").filter(function(index){retrun$("ol",this).size()==0;});
is(expr) 由于input元素的父元素是一个表单元素,所以返回true:$("input[type='checkbox']").parent().is("form")
slice(start,end) 选择第一个p元素:$("p").slice(0,1);
not(expr) 从p元素中删除带有select的ID的元素:$("p").not($("selected")[0])
查找
add(expr) 动态生成一个元素并添加至匹配的元素中:$("p").add("<span>Again</span>")
children([expr]) 查找IDV中的每个子元素:$("div").children()
closest([expr]) 为事件源最近的父类li对象更换样式:$(document).bind("click",function(e){
$(e.target).closest("li").toggleClass("hilight");});
contents() 查找素有文本节点并加粗:$("p").contents().not('[nodeType=1]").wrap("<b/>");
find(expr) 从所有的段落开始,进一步搜索下面的span元素。与$("p span")相同:$("p").find("span")
串联 Chaining
andSelf() 选取所有div移机内部的p,并加上border类:$("div").find("p").andSelf().addClass("border");
end() 选取所有的p元素,查找并选取span子元素,然后再回过来选取p元素:$("p").find("span").end()
四、使用jQuery操作元素的属性与样式
区分DOM属性和元素属性:浏览器将元素的“元素属性”存储为“DOM属性”。
操作元素属性:
attr(name) 返回文档中第一个图像的src属性值:$("img").attr("src");
attr(properties) 为所有图像设置src和alt属性:$("img").attr({src:"test.jpg",alt:"Test Image"});
attr(key,value) 把src属性的值设置为title属性的值:$("img").attr("title",function(){return this.src});
removeAttr(name) 将文档中图像的src属性删除:$("img").removeAttr("src");
修改CSS类
addClass(classes) 为匹配的元素加上'select'类:$("p").addClass("selected");
hasClass([classes]) 从匹配的元素中删除'selected'类:$("p").removeClass("selected");
toggleClass(class) 为匹配的元素切换'selected'类:$("p").toggleClass("selected");
toggleClass(class,switch) 每三次点击切换高亮样式:var count=0; $("p").click(funtion(){$(this).toggleClass("highlight",count==%3==0);});
修改CSS样式
css(name) 取得第一个段落的color样式属性的值:$("p").css("color");
css(properties) 将所有段落的字体颜色设为红色并且背景为蓝色:$("p").css({color:"#ff0011",background:"blue"});
css(name,value) 讲所有段落字体设置为红色:$("p").css("color",red");
修改位置
offset() 获取第二段的偏移:var p =$("p:last"); var offset=p.offset(); p.html("left:"+offset.left+",top:"+offset.top);
position() 获取匹配元素相对父元素的偏移。获取第一段的偏移:var p=$("p:first"); var position=p.position();$("p:last").html("left:"+position.left+",top:"+position.top);
scrollTop() 获取第一段相对滚动条顶部的偏移:var p=$("p:first"); $("p:last").text("scrollTop:"+p.scrollTop());
scrollTop(val) 设定垂直滚动条值:$("div.demo").scrollTop(300);
scrollLeft() 获取第一段相对滚动条左侧的偏移:var p=$("p:first"); $("p:last").text("scrollLeft:"+p.scrollLeft());
scrollLeft(val) 设置相对滚动条左侧的偏移:$("div.demo").scrollLeft(300);
五、事件处理
jQuery中的事件
bind (type,[data],fn) 当每个段落被点击的时候,弹出其文本:$("p").bind("click",function(){alert($(this).text());});
one(type,[data],fn) 当所有段落被第一次点击的时候,现实所有其文本:$("p").one("click",function(){alert($(this.text());});
trigger(event,[data]) 给一个时间传递参数:$("p").click(function(event,a,b){}).trigger("click",["foo","bar"]);
triggerHandler(event,[data])这个特别的方法会触发指定时间类型上所有绑定的处理函数,不会执行浏览器默认动作。
unbind(type,fn) 把所有段落的所有事件取消绑定:$("p").unbind()
使用自定义元素存储数据:
<div id="testDiv5" customer="customer data 1">获取自定义数据-1</div>
$("#testDiv5").bind("click",function(event){alert($(event.target).attr("customer"));});
<div id="testDiv6">获取自定义数据-2</div>
$("#testDiv6").bind("click",{customer:"customer data 2"},function(event){alert(event.data.customer)});
使用jQuery事件对象
type $("a").click(function(event{alert(event.type);});
target $("a[href=http://google.com ]").click(function(event){alert(event.target.href);});
data $("a").each(function(i){$(this).bind('click', {index:i},function(e){alert('my index is '+e.data.index);});});
ralatedTarget 对于鼠标事件,标示触发事件时离开或者进入的DOM元素
currentTarget 冒泡前的当前触发事件的DOM对象,等同于this
page x/y 鼠标事件中,事件相对于页面原点的水平/垂直坐标
result 上一个时间处理函数返回的值
timeStamp 事件发生时的时间戳
事件对象函数列
preventDefault() 取消可能引起任何语义操作的事件
stopPropagation() 取消事件冒泡
stopImmediatePropagation() 取消执行其他的事件处理函数并取消事件冒泡