您的位置:首页 > Web前端 > JQuery

JQuery学习结束笔记

2013-02-18 23:04 351 查看
12.JQuery过滤器

!属性过滤选择器:
$("div[id]")选取有id属性的<div>
$("div[title=test]")选取title属性为"test"的<div>, Jquery中没有对getElementsByName警醒封装,用$("div[title!=test]")选取title属性不为"test"的<div>
还可以选择开头,结束,包含等,条件还可以复合. (*)
!表单对象选择器(过滤器)
$("#form1:enabled")选取id为form1的表单内所有启用的元素
$("#form1:disabled")选取id为form1的表单内所有禁用的元素
$("input:checked")选取所有选中的元素(Radio, CheckBox),没有空格
$("select:selected")选取所有选中的选项元素(下拉元素)

练习:使用checkbox , 使用each,

<script type="text/javascript">
$( function () {
$( "input[name=names]").click(function () {
var arr = new Array();
$( "input:checked").each(function (key, value) { arr[key] = $(value).val(); });
$( "#msgShow").text("一共选中" +arr.length+"项:"+arr.join( ','));
});
});
</script>


<body>
<form id="form1" runat="server">
<div>
<input type="checkbox" name="names" value="tom" />tom
<input type="checkbox" name="names" value="lili" />lili
<input type="checkbox" name="names" value="join" />join
</div>
<p id="msgShow"></p >
</form>
</body>


13.表单选择器

$(":input")选取所有<input>,<textarea>,<select>和<button>元素, 和$("input")不一样,$("input")只获得<input>,前者获得所有提交的表单
$(":text")选取所有单行文本框, 等价于$("input:[type=text]")
$(":password")选取所有密码框.同理还有":radio, :checkbox, :submit,:image, :reset, :button, :file, :hidden

14.JQuery的Dom操作
一.使用html()方法读取或者设置元素的innerHTML
alert($("a:first").html()); $("a:first").html("hello");
二.使用text()方法读取设置元素的innerText;
三.使用attr()方法读取或者设置元素的属性, 对于Jquery没有封装的属性用attr进行操作
alert($("a:first").attr("href")); //显示第一个a标签的href值
$("a:first").attr("href","http://www.baidu.com ")
四.使用removeAttr删除属性,是删除,比如删除href,就是把href属性从标签里面移除

15.动态创建Dom节点
一.使用$(html字符串)创建Dom节点,返回jquery对象,在调用append方法创建新的节点添加到dom中
二.$()穿件的就是一个jquery对象,可以进行完全的操作
var link = $("<a href='http://www.baidu.com'>百度</a>");
link.text("白毒");
link.attr("href","http://www.sina.com");
$("div:first").append(link);


三.append方法用来在元素的末尾追加元素
prepend, 元素的开始添加元素
after, 元素之后添加元素(添加兄弟)
before 在元素之前添加元素(添加兄弟)
四.删除选择的节点
案例 $("ul li.classFirst").remove(); 删除所有的ul下,样式为classFirst的节点
五.remove方法的返回值是被删除的节点对象,还可以继续使用被删除的节点.
六.empty清空,没有返回值的

练习: 1.动态生成网站列表, 实现无刷新分页
2.删除节点,使用remove()方法
3.选项框里面,进行移动
4.加法计算器,按=实现数字相加,求结果
5.15秒后协议文本的注册,时钟倒数(btn.disabled = true),文字也要现实
6.无刷新评论 点击评论按钮 动态增加一行 <li></li>
7.三个输入文本,光标离开文本框(文本框为空)设置背景色为红色,不为空显示白色. 提示:焦点进入控件的事件时onfocus,离开是onblur
8.超链接的单选效果,页面上若干个超链接, 点击一个超链接的时候被点击的超链接变红色背景,其他为白色背景.参考:点击 呜呜,没点击 "哈哈" window.event.returnValue=false 难点"this"
-------------------练习1----------------------

<script type="text/javascript">
$( function () {
var data1 = { "百度" : "http://www.baidu.com", "谷歌": "http://www.google.cn" };
var data2 = { "搜狐" : "http://www.sohu.com", "新浪": "http://www.sina.com" };
$( "#btnPre").click(function () {
$( "#table1 tr:lt(2)").remove();
$.each(data1, function (key, value) {
var tr = $("<tr><td><a href='" + value + "'>" + key + "</a></td></tr>" );
$( "#table1").append(tr);
});
});
$( "#btnNext").click(function () {
$( "#table1 tr:lt(2)").remove();
$.each(data2, function (key, value) {
var tr = $("<tr><td><a href='" + value + "'>" + key + "</a></td></tr>" );
$( "#table1").append(tr);
});
});
});
</script>


-------------------练习2----------------------

$(function () { $( "#del").click(function () { $("#select1 option:selected").remove() }); });


-------------------练习3----------------------

$(function () { $( "#next").click(function () { $("#select2").append($( "#select1 option:selected" ).remove()); }); });


-------------------练习4----------------------

$(function () { $( "#calculate").click(function () { $("#result").val(parseInt($( "#first").val(), 10) + parseInt($("#second" ).val(), 10)); }); });


-------------------练习5----------------------
$(function () {
$( "#register").attr("disabled" , true);
var times = 5;
var timeId = setInterval(function () {
alert( "22222");
if (times <= 0) {
$( "#register").attr("disabled" , false).val( "注册");
clearInterval(timeId);
return;
}
$( "#register").val("请仔细看一下协议,还剩" + times + "秒");
times--;
}, 1000);
});

-------------------练习6----------------------

$(function () { $( "#submit").click(function () { $("ul:first").append($( "<li>"+$("#txt" ).text()+"</li>")); }); });


-------------------练习7----------------------
$(function () {
$( ":text").blur(function () {
var tt = $(this );
if (tt.val() <= "" ) {
tt.css( "background", "red" );
}
else {
tt.css( "background", "white" );
}
});
});

-------------------练习8----------------------

$(function () { $( "a").click(function () { $(this).css( "background", "red" ).siblings().css("background", "white") }); })


-------------------练习9球队选择---------------------
$(function () {
$( "#ul1 li").css("cursor" ,"pointer").mouseover( function () {
$( this).css("background" , "red").siblings().css( "background", "white" );
}).click( function () {
$( this).css("background" , "white").appendTo( "#ul2");
});
})


16.样式操作
获取样式 attr("class"), 设置样式attr("class","myclass"), 追加样式addClass("myclass"), 移除样式remove("myclass"), 切换样式(没有添加,有去除添加) toggleClass("myclass"), 判断是否存在样式 hasClass("myclass")
案例:网页开灯效果 灰度过滤效果
$(function () { $( "#btn").click(function () { $(document.body).toggleClass( "blackwhite") }) });
$( function () { $("#kgd" ).click(function () { $(document.body).toggleClass( "kgd") }) });

.blackwhite{ filter :Gray}
.kgd{ background-color :Black}


练习: 搜索框效果 焦点翻入空间 , 如果文本框中的值是请输入关键词,那么将文本清空,并且将颜色设置为黑色.如果焦点离开空间,如果文本框为空值,填入灰色的"请输入关键词"
代码:
$(function () {
$( "#txt").val("请输入关键词" ).focus(function () { //焦点进入文本框判断是否删除文本,切换样式
if ($(this ).val() == "请输入关键词") {
$( this).val("" ).toggleClass("txtFull");
}
}).blur( function () { //焦点离开文本.空:写入默认值,切换样式; 非空:不操作
if ($("#txt" ).val() == "") {
$( "#txt").val("请输入关键词" ).toggleClass("txtFull");
}
});
});


[align=left]17.节点操作[/align]
[align=left] 一.替换节点:[/align]
[align=left] $("br").replaceWith("<hr/>"); //回车变成横线[/align]
[align=left] 二.包裹节点[/align]
[align=left] $("p").wrap("<font color='red'></font>")[/align]

18.RadioButton操作
一.$("input[name=gender]:checked").val()
二.设置RadioButton的选中值
$(":radio[name=gender]").val(["女"])

[align=left] 案例: 性别选择[/align]
$(function () {
$( "#getValue").click(function () { //获得选中的radioButton的value
alert($( ":radio[name=gender]:checked" ).val());
});
$( "#setValue").click(function () { //设置默认值,注意不要丢了[]
$( ":radio[name=gender]").val(["女" ]);
$( ":checkbox").val(["篮球" ,"网球"]);
});
});


19.RadioButton操作2
一.对RadioButton的选择技巧对于CheckBox和Select列表框也适用
二.除了可以使用val批量设置RadioButton,CheckBox等的选中以外,还可以设定checked属性来单独设置控件的选中状态
$("btn1").attr("checked","true")
练习: checkBox的全选, 全不选, 反选
$( "#btnAll").click(function () { $(":checkbox").attr( "checked", true ); }); //全选
$( "#btnNon").click(function () { $(":checkbox").attr( "checked", false ); }); //全不选
$( "#btnOps").click(function () { $(":checkbox").each( function () { $(this ).attr("checked", !$(this).attr("checked" )); }); }); //反选


20.事件
一.JQuery事件绑定: $("#btn").bind("click",function(){ }), 每次调用比较麻烦, 简化$("#btn").click(function(){ })
二.鼠标进入, 离开事件
$(*).mouseenter(fn1).mouselease(fn2) == $(*).hover(fn1,fn2)
三.事件冒泡 JQuery和Javascript同样有事件冒泡 比如: 点击里层的标签,依次激发外层标签的点击事件
四.阻止冒泡 e.stopPropagation()
多层次中的期中一层的click事件 $(*).click(function(e){ ...; e.stopPropagation(); })
五.阻止表单提交,和超级链接转向 e.preventDefault(); 还有 onclick="window.event.returnValue=false"
也可以进行阻止
$("a").click(function(e) {e.preventDefault() }) //阻止所有的超级链接
六.属性: pageX, pageY, target获得触发事件的元素(冒泡的起始,和this不一样) ,which如果是鼠标事件获得按键(1左键 2中建 3右键) altKey,shiftKey,ctrlKey,获得alt,shift,ctrl是否按下,为bool值. keyCode属性发生事件时的keyCode( 键盘码, 小键盘的1和主键盘的keyCode不一样,charCode是一样的,是ASC码)
七:移除事件绑定 unbind()移除元素上所有的事件, unbind("click")只能移除click事件的绑定
bind: +=
unbind: -=
八.一次性事件 只执行一次的事件,使用one()方法事件绑定 one("click",fn)一次点击
this随监听事件改变,为当前的监听对象,
target对应的是最原始触发事件的对象 同srcElement
21.鼠标
一.在mousemove,click等时间的匿名响应函数中如果制定一个参数e.那么就可以从e读取发生时间是的一些信息, 比如对于mousemove等鼠标事件来说,就可以读取e.pageX, e.pageY来获得发生事件时鼠标在页面的坐标
二.坐标 e.pageX; e.pageY;
练习: 图片随着鼠标走 注意div的style="position:absolute"
$(document).mousemove( function (e) {
$( "#fly").css("left" ,e.pageX).css("top",e.pageY);
});

[align=left] 三.练习美女图片详细解析层 [/align]
//用AJEX传入
var data = { "images/LDH_S.jpg" : ["images/LDH.jpg", "刘德华" , "170"],
"images/LYF_S.jpg": ["images/LYF.jpg" , "刘亦菲", "160" ],
"images/ZJL_S.jpg": ["images/ZJL.jpg" , "周杰伦", "170" ]
};
$( function () {
$.each(data, function (key, value) {
var small = $("<img alt='Sorry' src='" + key + "' />")
small.attr( "bigmappath", value[0]);
small.attr( "personname", value[1]);
small.attr( "personheight", value[2]);
$( "#divS").append(small);
$(small).mousemove( function (e) {
$( "#detail").css("display" , "").css( "left", e.pageX).css("top" , e.pageY);
$( "#bigmap").attr("src" , $(this).attr( "bigmappath"));
$( "#detailname").text($(this ).attr("personname"));
$( "#detailheight").text($(this ).attr("personheight"));
$( "#detailclose").click(function () { $("#detail").css( "display", "none" ); });
});
});
});


21.动画
一. show(), hide() 方法显示,隐藏元素. 用toggle()方法进行显示,隐藏切换
$(*).click(function(){ $(this).hide(fast) })
hide()里面可以增加参数,毫秒为单位 fast(200ms), slow()
练习: 模拟qq列表
$(function () {
$( "#qq li:odd").addClass("body" ).hide(); //设置子项样式并隐藏
$( "#qq li:even").addClass("head" ).click(function () {
$( this).next("li.body" ).toggle("fast");
}); //设置父项样式并写点击事件
});
ul{ list-style-type :none}
.head{ background-color :Red}
.body{ border-color :Blue; border-bottom-style:solid ; border-bottom-width: 2px}

[align=left] [/align]
二.其他在具体可以看书,这里不是重点
22.JQuery插件: Jquery cookie
一.什么是cookie: Cookie就是保存在浏览器上的呢绒,用户在这次浏览网页的时候向cookie中保存文本内容,下次再访问页面的时候就可以取出来上次保存的内容,这样就可以得到上次"记忆"的内容/ Cookie不是Jquery特有的概念,只不过JqueryCookie把它简化得更好用而已.Cookie就是存储在浏览器里的一些数据.
二.Cookie需要浏览器的支持,浏览器的Cookie就是可以禁用,如果禁用了Cookie就不能使用了,不过一般不用考虑禁用Cookie的情况.Cookie的几个特性: Cookie是与域名相关的, 所以163.com不能读取baidu.com的cookie,正因为如此读取,设置cookie的时候不用担心不同域名cookie的冲突; 一个域名能写入Cookie总尺度是有限制的,一般是几千字节,能写入的Cookie总条数一般为几十条,超过以后浏览器自己会根据自己的策略移除一些Cookie;
Cookie不是写入后一定下次能读出来,cookie是可以手工删除的.
22.Jquery cookie的使用
一.使用方法, Cookie保存的是键值对
1)添加jquery.cookie.js
2)赋值$.cookie("用户名","tom"); cookie中保存的值都是文本
3)取值$.cookie("用户名");
二.设置值得时候还可以指定第三个参数,$.cookie("名字","值",{expires:7,path:"/",domain:"itast.cn",secure:true}) {*时间:7天,'',*允许访问域名,}

练习:
$(function () {
if ($.cookie("BgColor" )) {
$(document.body).css( "background", $.cookie("BgColor" ));
}
$( "#BgGreen").click(function () { $(document.body).css("background", "Green"); $.cookie("BgColor" ,"Green"); });
$( "#BgRed").click(function () { $(document.body).css("background", "Red"); $.cookie("BgColor" , "Red"); });
$( "#BgYellow").click(function () { $(document.body).css("background", "Yellow"); $.cookie("BgColor" , "Yellow"); });
});


23.常用Jquery插件
一.JQuery官方的UI控件 JWueryUI
http://jqueryui.com/ 下载包
延时常用方法,分析代码
二.JQuery.validate 表单验证插件
三.form 用于为表单提供直接ajax能力
四.所有插件列表 http://plugins.jquery.con

24.IE调试工具

debugbar 查看网页代码
ie自带的调试工具也很不错

最后.随记
如果报错"例外被抛出"等,很可能是选择器表达式有问题,比如单词拼写错误,加了不必要的空格等.val是方法不是属性.JQuery是完全按照js的语法写出来的函数库,完全符合js规范,因此完全可以和普通js代码混着用,但最好不要dom和jquery混着用.
$("body *").click() //body下所有控件的点击事件
如果想要获得事件的相关信息,可以在function(e)传入参数中引入e
this 和 element
结论:this是监听当前的事件的对象,而event.srcElement是引发事件的对象.

当event发生时,srcElement和target是返回事件的目标节点(触发该事件的节点),即直接引发事件的那个元素。

this返回的则是定义了该event响应函数的那个元素。

动态添加标签时,必须先append后才能通过标签来赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: