JQuery简介
例子,得到一个元素值是原数组值二倍的新数组
var arr = [3, 5, 9];
var arr2 = $.map(arr, function(item) { return item * 2; });//联想C#委托的例子。函数式编程。
$.map不能处理Dictionary风格的数组。
var arr = { "tom": "汤姆", "jerry": "杰瑞", "lily": "莉莉" };
$.each(arr, function(key, value) { alert(key+"="+value); });
如果是普通风格的数组,则key的值是序号。
var arr = [3, 6, 9];
$.each(arr, function() { alert(this); });//能读懂。
普通数组推荐用无参,用dict风格的就用key、value。
jQuery对象、Dom对象
var div1 = document.getElementById( " div1 " );
var jqDiv1 = $(div1);
alert(jqDiv1.html());
var domdiv = jqDiv1[ 0 ];
alert(domdiv.innerHTML);
}
< input type = " button " onclick = " test() " value = " click " / >
$( " p " ).click( function () {
$( this ).css( " background " , " red " );
$( this ).siblings().css( " background " , " white " );
});
< p > 测试 < / p>
< p > 测试 < / p>
< p > 测试 < / p>
评分控件
< script type = " text/javascript " >
$( function () {
$( " #table1 td " ).css( " cursor " , " pointer " );
$( " #table1 td " ).click( function () {
$( " #table1 td " ).css( " background " , " red " );
$( this ).nextAll( " td " ).css( " background " , " white " );
});
});
< / script>
< table id = " table1 " border = " 1 " >
< tr >< td >& nbsp; < / td><td> < / td >< td >& nbsp; < / td><td> < / td >< td >& nbsp; < / td>< / tr >
< / table>
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
< title >< / title>
< script src = " js/jquery-1.4.2.js " type = " text/javascript " >< / script>
< script type = " text/javascript " >
$( function () {
$( " #table1 tr:first " ).css( " fontSize " , " 40 " );
$( " #table1 tr:last " ).css( " color " , " red " );
$( " #table1 tr:gt(0):lt(3) " ).css( " fontSize " , " 28 " ); // lt(3)是从gt(0)出的新序列中的序号,不要写成lt(4)
$( " #table1 tr:gt(0):even " ).css( " background " , " red " ); // 表头不参与“正文表格的奇数行是黄色背景”,所以gt(0)去掉表头。
});
< / script>
< / head>
< body >
< table id = " table1 " >
< tr >< td > 姓名 < / td><td>成绩< / td >< / tr>
< tr >< td > tom < / td><td>100< / td >< / tr>
< tr >< td > jim < / td><td>99< / td >< / tr>
< tr >< td > john < / td><td>98< / td >< / tr>
< tr >< td > jason < / td><td>97< / td >< / tr>
< tr >< td > aaa < / td><td>97< / td >< / tr>
< tr >< td > 平均分 < / td><td>98< / td >< / tr>
< / table>
< / body>
< / html>
function changeColor() {
$( " #table1 tr:odd " ).css( " background " , " yellow " );
}
< table id = " table1 " >
< tr >< td > tom < / td><td>30< / td >< / tr>
< tr >< td > jim < / td><td>20< / td >< / tr>
< tr >< td > lily < / td><td>22< / td >< / tr>
< tr >< td > lucy < / td><td>23< / td >< / tr>
< tr >< td > mike < / td><td>25< / td >< / tr>
< / table>
练习:前三名粗体显示
$( function () {
$( " #ulNames li:lt(3) " ).css( " font-weight " , " bold " );
});
< ul id = " ulNames " >
< li > 赵百万 < / li>
< li > 钱多多 < / li>
< li > 孙二娘 < / li>
< li > 李奎 < / li>
< li > 周迅 < / li>
< / ul>
修改点击行的所有td的背景色
$( function () {
$( " table tr " ).click( function () {
$( " td " , $( this )).css( " background " , " red " );
});
});
< table border = " 1 " >
< tr >< td > aa < / td><td>aa< / td >< td > aa < / td>< / tr >
< tr >< td > aa < / td><td>aa< / td >< td > aa < / td>< / tr >
< tr >< td > aa < / td><td>aa< / td >< td > aa < / td>< / tr >
< / table>
练习:评分控件
$( function () {
$( " #tableRating td " ).mouseover( function () {
var curtd = $( this );
var tr = curtd.parent();
var tdindex = tr.children().index(curtd);
$( " td:lt( " + (tdindex + 1 ) + " ) " , tr).html( " <img src=starFill.jpg/> " );
curtd.nextAll().html( " <img src=starEmpty.jpg/> " );
});
$( " #tableRating td " ).html( " <img src=starEmpty.jpg/> " ).css( " cursor " , " pointer " );
});
< table border = " 1 " id = " tableRating " >
< tr >
< td >< / td>
< td >< / td>
< td >< / td>
< td >< / td>
< td >< / td>
< / tr>
< / table>
显示选中的复选框信息
$(function() {
$("input[name=names]").click(function() {
var names = $("input[name=names]:checked");
var arr = new Array();
names.each(function(key, value) { arr[key] = $(value).val(); });
$("#msgNames").text("共选中"+names.length+"条:"+arr.join(","));
});
});
<input type="checkbox" name="names" value="tom" />tom
<input type="checkbox" name="names" value="jim" />jim
<input type="checkbox" name="names" value="lily" />lily
<p id="msgNames"></p>
==========================================================================================
表单选择器
$("#select1 option:selected").appendTo($("#select2")) ;
$( function () {
$( " #btnRemove " ).click( function () {
$( " #ulSite li " ).remove();
});
});
< ul id = " ulSite " >
< li > 百度 < / li>
< li > 搜狐 < / li>
< li > 新浪 < / li>
< / ul>
< input id = " btnRemove " type = " button " value = " 删除 " / >
2 、选择球队
练习,选择球队:
$( function () {
$( " #tableToSelect tr " ).css( " cursor " , " pointer " )
.mouseover( function () {
$( this ).css( " background " , " red " );
$( this ).siblings().css( " background " , " white " );
})
.click( function () {
$( this ).remove();
$( " #tableSelected " ).append($( this ));
});
});
待选择球队:
< table id = " tableToSelect " >
< tr >< td > 火箭 < / td><td>100分< / td >< / tr>
< tr >< td > 奇才 < / td><td>99分< / td >< / tr>
< tr >< td > 小牛 < / td><td>98分< / td >< / tr>
< / table>
< hr / >
选中的球队:
< table id = " tableSelected " >< / table>
< style type = " text/css " >
.dark
{
background - color:Black;
}
< / style>
< script type = " text/javascript " >
$( function () {
$( " #btn " ).click( function () {
$( " body " ).toggleClass( " dark " );
});
});
< / script>
案例:聚焦控件的高亮显示:
$( " :text " ).focus( function () { $( this ).addClass( " focus " ); }).blur( function () { $( this ).removeClass( " focus " ); });
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
< title >< / title>
< script src = " ../js/jquery-1.4.2.js " type = " text/javascript " >< / script>
< script type = " text/javascript " >
$( function () {
$( " #kw " ).val( " 请输入关键词 " ).addClass( " waiting " )
.blur( function () {
if ($( this ).val() == "" ) {
$( " #kw " ).val( " 请输入关键词 " ).addClass( " waiting " );
}
})
.focus( function () {
if ($( " #kw " ).val() == " 请输入关键词 " ) {
$( " #kw " ).val( "" ).removeClass( " waiting " );
}
});
});
< / script>
< style type = " text/css " >
.waiting{color:Gray;}
< / style>
< / head>
< body >
< input type = " text " id = " kw " / >
< / body>
< / html>
< div style = " float: left; width: 100px " >
< select id = " selectSrc " multiple = " multiple " size = " 8 " >
< option > 添加 < / option>
< option > 修改 < / option>
< option > 删除 < / option>
< option > 查看 < / option>
< option > 导出 < / option>
< / select>
< / div>
< div style = " float: left; width: 50px " >
< input id = " btnGo " type = " button " value = " > " / >
< br / >
< input id = " btnBack " type = " button " value = " < " / >
< br / >
< input id = " btnAllGo " type = " button " value = " >> " / >
< br / >
< input id = " btnAllBack " type = " button " value = " << " / >
< / div>
< div style = " float: left; width: 100px " >
< select id = " selectDest " multiple = " multiple " size = " 8 " >
< / select>
< / div>
script代码放到元素下面省得写$();
< script type = " text/javascript " >
function MoveAll(src, dest) {
src.children( " option " ).each( function (key, value) { dest.append(value); });
}
function MoveSelect(src, dest) {
src.children( " option " ).each( function (key, value) { if (value.selected) dest.append(value); });
}
$( " #btnGo " ).click( function () {
MoveSelect($( " #selectSrc " ), $( " #selectDest " ));
});
$( " #btnAllBack " ).click( function () {
MoveSelect($( " #selectDest " ), $( " #selectSrc " ));
});
$( " #btnAllGo " ).click( function () {
MoveAll($( " #selectSrc " ), $( " #selectDest " ));
});
$( " #btnAllBack " ).click( function () {
MoveAll($( " #selectDest " ), $( " #selectSrc " ));
});
< / script>
2 、练习:CheckBox的全选、反选
$( " #selAll " ).click( function () {
$( " #playlist :checkbox " ).attr( " checked " , true ); // "#playlist :checkbox" 中间的空格不能省略
});
$( " #unselAll " ).click( function () {
$( " #playlist :checkbox " ).attr( " checked " , false );
});
$( " #reverse " ).click( function () {
// alert($("#playlist :checkbox").attr("checked"));
// $("#playlist :checkbox").attr("checked", !$("#playlist :checkbox").attr("checked"));//不可以,要理解迭代的工作过程。
$( " #playlist :checkbox " ).each( function () {
$( this ).attr( " checked " , ! $( this ).attr( " checked " ))
});
});
事件
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
< title >< / title>
< script src = " ../js/jquery-1.4.2.js " type = " text/javascript " >< / script>
< script type = " text/javascript " >
$( function () {
$( " #p1 " ).click( function (e) { alert( " 下面是p的 " ); alert($( this ).html()); alert($(e.target).html()); });
$( " #tr1 " ).click( function (e) { alert( " 下面是tr的 " ); alert($( this ).html()); alert($(e.target).html()); });
});
< / script>
< / head>
< body >
< table id = " t1 " >
< tr id = " tr1 " >< td id = " td1 " >< p id = " p1 " > nihao < / p>< / td >< / tr>
< / table>
< / body>
< / html>
事件对象的方法:preventDefault()、stopPropagation()
属性:pageX、pageY、target获得触发事件的元素、which如果是鼠标事件获得按键(1左键,2中键,3右键)。altKey、shiftKey、ctrlKey获得alt、shift、ctrl是否按下,为bool值。keyCode、charCode属性发生时间时的keyCode、charCode。
< script type = " text/javascript " >
$( " a " ).click( function (e) {
var target = $(e.target);
alert(target.attr( " href " ));
e.preventDefault();
});
< / script>
$( " :button " ).mouseup( function (e) {
if (e.ctrlKey && e.which == 3 ) {
alert( " 这个秘密都被你发现了!奖励一百万! " );
}
});
移除事件绑定:bind()方法即可移除元素上所有绑定的事件,如果bind( " click " )则只移除click事件的绑定。
一次性事件:如果绑定的事件只想执行一次随后立即unbind可以使用one()方法进行事件绑定:
$( " :button[value=one] " ).one( " click " , function () { alert( " 只有这一次! " ); });
< script type = " text/javascript " >
$(document).mousemove( function (e) {
$( " #tips1 " ).css( " top " ,e.pageY + 20 ).css( " left " ,e.pageX);
});
< / script>
< div id = " tips1 " style = " position:fixed " > 跟着你 < / div>
$(document)表示整个浏览器页面窗口,$(body)仅表示可用范围。
练习3:Tooltips效果
< a href = "" id = " cslink " > C# < / a>
$( " #cslink " ).mouseover( function (e) {
var tooltip = $( " <div>C微软公司推出的基于<font color='red'>.Net平台</font>的语言。<div> " );
tooltip.css( " position " , " fixed " );
tooltip.css( " background-color " , " yellow " );
tooltip.css( " top " , e.pageY + 20 ).css( " left " , e.pageX);
$( " body " ).append(tooltip);
$( " #cslink " ).mouseout( function () {
tooltip.remove();
});
});
通过闭包,不用给tooltip声明id才能remove。
练习4:带图片的Tooltips
< style type = " text/css " >
.tooltip
{
position:fixed;
background - color:Yellow;
}
< / style>
< script type = " text/javascript " >
$( " #cslink " ).mouseover( function (e) {
var tooltip = $( " <div class='tooltip'>C微软公司推出的基于<font color='red'>.Net平台</font>的语言。<br/><img src='images/csharp1.jpg'/><br/><input type='button' value='关闭' οnclick='closeTooltip()'/> <div> " );
tooltip.css( " top " , e.pageY + 20 ).css( " left " , e.pageX);
closeTooltip(); // 关闭旧的
$( " body " ).append(tooltip);
});
function closeTooltip() {
$( " .tooltip " ).remove();
}
< / script>
< input type = " button " value = " show " / >
< input type = " button " value = " hide " / >
< script type = " text/javascript " >
$( " :button[value=show] " ).click( function () { $( " div " ).show( " slow " ); });
$( " :button[value=hide] " ).click( function () { $( " div " ).hide( " slow " ); });
< / script>
案例:QQTab效果
< style type = " text/css " >
ul
{
list - style - type: none;
}
.tabBtn
{
background - color: Yellow;
cursor: pointer;
}
.tabDiv
{
border - style: solid;
border: 1px;
}
< / style>
课上练习:TabContro效果
< style type = " text/css " >
#tabCtrl ul
{
list - style - type: none;
}
#tabCtrl ul li
{
float : left;
margin: 0 10px;
cursor: pointer;
}
.activeTab
{
background - color: Red;
}
< / style>
< div id = " tabCtrl " >
< ul >
< li class = " activeTab " > 常规 < / li>
< li > 高级 < / li>
< li > 设置 < / li>
< / ul>
< br / >
< div id = " tabPage " >
< div >
这里是常规设置 < / div>
< div style = " display: none " >
这里是高级设置 < / div>
< div style = " display: none " >
这里是设置设置 < / div>
< / div>
< / div>
< script type = " text/javascript " >
$( " #tabCtrl li " ).click( function () {
$( this ).addClass( " activeTab " );
$( this ).siblings().removeClass( " activeTab " );
var index = $( " #tabCtrl li " ).index($( this ));
var div = $( " #tabPage div " ).eq(index);
div.show();
div.siblings().hide();
});
< / script>