1、事件一个个的绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="js/jquery-1.10.2.min_65682a2.js"></script>
</head>
//同一个对象绑定多个事件
<script type="text/javascript">
$(function() {
$('div').bind('click', function() {
alert(21212);
});
//鼠标移入事件
$('div').bind('mouseover', function() {
$(this).css('background-color', '#70a532');
});
//鼠标移出事件
$('div').bind('mouseout', function() {
$(this).css('background-color', 'red');
});
});
</script>
<body>
<p>jQuery实践绑定</p>
<div style="background-color: red;height: 122px;width: 122px;">
</div>
</body>
</html>
2、通过通过json同时绑定多个事件
<script type="text/javascript">
$(function() {
var jn = {
click:function(){
alert(2);
},
mouseover:function(){
alert(3);
},
mouseout:function(){
alert(4);
}
}
$('div').bind(jn);
});
</script>
3选择器
1基本选择器
$('#id属相值')------->document.getElementByid()
$('tag标签名')------->document.getElementByTagName()
$('s1,s2,s3')联合选择器
$('*')通配符选择器
<script type="text/javascript">
function one(){
$('#xuanze').css('background-color','red');
}
</script>
这个是id选择器
$('input') 这个是标签选择器
$('.appp') 这个是css名选择器
2层次选择器
根据父节点进行结点的选中
3 并行选择器
选中父节点 用关系数字选定下面的第几个的结点
4 内容过滤选择器
包含内容选择器,获得结点内部必须通过标签包含制定的内容
contains(内容)
$("div:contains(beijing)")
empty
获得空元素(内部没有任何元素/文本(空))结点对象
$("div:empty")
里面什么也没有,空格算是空文本
has
内部包含制定元素的选择器
$("div:has(#apple)")
是通过id 值进行寻找
parent
寻找的结点必须作为父节点存在
$("div:parent")
寻找结点里面的内容,有一点结点里面不能为空
为空的话就不死父节点了
5表单域选中
//$(:checked)过滤出被选中的复选框,单选按钮
alert($("input:lt(4):checked"));
console.log($("input:lt(4):checked")) ;
$("input:gt(3):lt(4):checked")
其中gt()下标大于多少的,lt()是下标小于多少的
两者一起组合使用需要注意
组合使用的话是当gt()确定好下标之后,以gt()考试的位置进行重新的排序,进行lt()的排列
下拉框的话是
$("input:lt(4):selected")
四:
$("#dds").attr('value');
1可以通过id class获取相应的值
2设置相应的值
$("#dds").attr('value','asasasas');
如果原来没有值得话加上,有的话就修改
3批量修改
用json进行批量修改
function one(){
var ij={name:'sdas',class:'sa'}
$("#dds").attr(ij);
}
4通过函数进行修改
这个方法纯属装x用
$("#dds").attr('value',function(){
return 12+30;
});
5删除属性
$("#dds").removeAttr('class');
class操作
$("#dds").attr('class','asasasas');
$("#dds").attr('class','asas');
修改class属性
后面的会吧前面的给覆盖
$("#dds").addClass('class','asas');
$("#dds").addClass('class','asas1212');
这个方法不会出现覆盖,会保留两个class属性
删除class属性
$("#dds").removeClass('asasasas');
只是删除class里面的值
$("#dds").removeAttr('class');
删除class的属性
开关class属性值
$("#dds").toggleClass('asasasas');
有的话就删除,没有的就加上
2标签包含内容的操作
$("#dds").html();
$("#dds").text();
()里面如果有参数的话就是修改信息
如果为空的话就是获取信息
html()和text()
方法的区别
html()
获取的是结点里面全部的信息,包括里面的标签
text()
也是获取信息,但是他获取的是过滤掉标签的信息,也就是只获取文本信息
css样式操作
$("#dds").css('width');
获得css样式 行内,内部,外部,均可获得
普通的dom方式只能获得 行内样式
document.getElementsByTagName('div')[0].style.width;
value属性快捷操作
$("#dds").val();
括号里面为空的话是获取值,有值得话是更该、改值
$("#dds").val();
复选框
判断复选框的选中情况
$("#dds").attr('checked'); true选中false未选中
便利选中的项目,获得value值
var s=''
for(var i=0;i< $("#dds:checked").length){
$("#dds:checked:eq('+i+')").val();
s+= $("#dds:checked:eq('+i+')").val()+",";
删除逗号
s=s.substr(0,s.length-1);
}
设置多个复选框的选中
valus值等于2或4的被选中
$('.sasas').val([2,4])
val里面是数组
这就是val的强大之处
复选框的全选和全不选
$().attr('checked',true) 设置复选框选中
$().attr('checked',false) 取消复选框选中
$().attr('checked') 判断选中情况返回布尔值
下拉列表操作
获取当前选中的value
单选的
$('option:selected').val() 单选情况
多选的下拉列表
<select multiple="multiple">
</select >
加一个标签就好了
多选情况
$('select').val();
单选按钮
获得选中情况
$('.sa:select').val();
设置选中情况
$('.sa').val([value值元素]);
和复选框的一样,这个只能下、写一个
反选
for(var i=0;i<$('.hby').length;i++){
var flag= $('.sa:eq('+i+')').attr('checked');
$('.sa:eq('+i+')').attr('checked',!flag)
}
$符号的由来
就是一个函数,函数名称是$符号而已
jquery对象和dom对象关系
jquery对象:$('li')返回的就是jquery对象
dom 对象 : document.getElementByid() 返回的就是dom对象
jquery对象和 dom 对象的转化
1两者的成员不能互相调用
jquery框架对象分析
jquery框架对象类型: jquery对象$对象
1 jquery对象就是各种选择器创建出来的对象
2 $对象就是函数对象
$对象可以调用的许多成员也是通过extend复制继承过来的
$.get() $.post()
以上无论是jquery对象还是$对象,他们90%以上的成员都是通过extend复制继承过来的
遍历方法
each()方法
$.each(数组/对象,function处理) $对象 调用
$(选择器).each(function处理) jquery对象 调用
1遍历对象
$.each(对象,function(k对象属性变量,v对象属性值变量){})
var cat={name:'kity',age:'5',climb:function(){
alert('buhao');
}}
$.each(cat,function(k,v){
console.log(k+'22222'+v);
});
2遍历数组
$.each(数组,function(k数组属性变量,v数组属性值变量){})
var color=['bule','read','green']
$.each(color,function(k,v){
console.log(k+'22222'+v);
});
3 遍历jquery对象
$('li').each(function(w对象下标索引值,f 代表具体的每个dom对象){})
window.οnlοad=function(){
$('li').each(function(w,f){
//this代表遍历出来的每个dom对象
等同于f
console.log(w+'===='+f);
})
}
其中window.οnlοad=function(){}
当js代买写到dom对象前面的时候需要写一下,获取上下文
$.each()等同于jquery.each()
这是$对象调用的成员
$('li').each
这是jquery对象调用的成员
dom对象也就是具体选中的值
jquery对象:通过各种选择器获得对象都市jquery对象
$对象:就是函数对象,$.get(); .......
⑦加载事件
1$(document).ready(function(){})
2$().ready(function(){})
3$(function(){})
jQuery加载事件和传统加载事件的区别
在同一个请球中,jquery加载事件可以设置多个,而传统的加载事件只能设置一个
传统的加载方式是给onload事件附值,多次赋值,后面的会覆盖前面的
jquery加载事件是把每一个加载的事件都存到一个数组里面,成为数组的元素,执行的时候就遍历该数组的每个元素即可,因此,可以设置多个加载事件。
加载的时机不同
传统的加载事件,是全部内容(文字,图片,样式)在浏览器中加载完成之后才执行加载事件
jquery方式,只要全部内容(文字,图片,样式)在内存里面对应的dom树节点绘制完成就给执行,有可能对应的内容在浏览器中还没有显示
jquery文档事件操作
1结点追加
1.1 父节点追加
新节点的追加
后置追加
<ul id="zhu">
<li>哈哈</li>
<li>啦啦啦</li>
<li>我我我</li>
</ul>
<ul id="zhu">
<li>哈哈1</li>
<li>啦啦啦·</li>
<li id="ad">我我我1</li>
</ul>
$('#zhu').append("<li>tata</li>");
追加到了我我的后面,在这里就是以ul为父节点在后面追加的
$('#zhu').prepend("<li>tata</li>");
追加到了,哈哈的前面
已有结点的移动到我我我的后面了
$('#zhu').append($("#ad"));
把id为ad的结点我我我1追加到了
<input οnclick="过程代码this">
<input οnclick="函数()">
function 函数(){this}
itnode.οnclick=函数名称;
function名称(){this}
itnode.οnclick= function名称(){this}
以上4种情况,第二种this代表window,其他三种代表input元素结点对象
事件绑定
$().bind(事件类型,function 事件处理);
$().bind(类型1 类型2 类型3,function 事件处理);
取消事件绑定
$().unbind();
事件委派
$('li').live('click',function(){})
取消的话是 die
为什么要用事件委派
如果用append的话新增加的结点的事件是绑定不上的,所以要用live委派处理
事件对象,阻止浏览器默认动作,阻止冒泡事件
$().bind('click',function(evt){window.event});
$().click(function(evt){});
$().bind('mouseover',f1)
function f1(evt){}
事件对象:就使用红色的evt即可,在jquery框架内部有做浏览器兼容的处理
$().click(function(evt){
evt.preventDefault();
evt.stopPropagation();
});
这两个方法在jquery做好封装了,就是兼容的处理。2017/2/17
动画效果
隐藏
$('div').hide();
显示
$('div').show();
渐进效果
hide([事件参数毫 秒][处理函数]);
$('div').hide(3000,function(){
});
$('div').toggle(3000);
开关
垂直动画效果
隐藏
$('div').slideUp(3000);
显示
$('div').slideDown(3000);
显示
$('div').slideToggle(3000);
淡入淡出
透明度在变化
隐藏
$('div').fadeOut(3000);
显示
$('div').fadeIn(3000);
$('div').fadeTo(speed,透明度,函数);
jquery封装ajax
$.ajax
$.ajax({
url:'we.php',
data:{title:'哈哈',date:'4-1'},
dataType:'json',
type:'post',
success:function(mas){
}
});
$.ajax({
type: 'POST',
url: '<{:U('Index/public_menuLeft')}>',
data: {menuid: menuid},
cache: false,
beforeSend: function(){
removeLeft();
//更新标题名称
$('body').layout('panel', 'west').panel({title: title});
var loading = '<div class="panel-loading">Loading...</div>';
$("#leftmenu").accordion("add", {content: loading});
},
success: function(data){
removeLeft();
//左侧内容更新
$.each(data, function(i, menu) {
var content = '';
if(menu.son){
var treedata = $.toJSON(menu.son);
content = '<ul class="easyui-tree" data-options=\'data:' + treedata + ',animate:true,lines:true,onClick:function(node){openUrl(node.url, node.text)}\'></ul>';
}
$("#leftmenu").accordion("add", {title: menu.name, content: content, iconCls:'icons-folder-folder_go'});
});
leftAreaChangeListen();
}
});
$.post
$.post('<{:U('Index/login?dosubmit=1')}>', $("form").serialize(), function(data){
if(!data.status){
$.messager.alert('提示信息', data.info, 'error');
changeCode();
}else{
$.messager.progress({text:'加载中,请稍候...'});
window.location.href = data.url;
}
},'json');
if (I('get.dosubmit')){
$admin_db = D('Admin');
$username = I('post.username', '', 'trim') ? I('post.username', '', 'trim') : $this->error('用户名不能为空', HTTP_REFERER);
$password = I('post.password', '', 'trim') ? I('post.password', '', 'trim') : $this->error('密码不能为空', HTTP_REFERER);