Web前端笔记(4)

2016/03/20 Web 阅读次数:

JQuery

JQuery

入口函数:

$()---选择函数(查找功能内)

完整写法: $(document).ready(匿名函数)

化简写法: $(匿名函数) $(function(){}

结论:jq入口函数可以使用多个,按顺序执行;原生js只能一个页面使用一个入口函数,万一使用多个,只执行最后一个

$\(\).hide\(500\) 隐藏

$\(\).show\(500\) 显示

$\(\).toggle\(500\) 反义词:切换显示和隐藏

JQ控制css:

$('div').css('width','500px'); //单属性设置
alert( $('div').css('width') ); //单属性访问
$('div').css({k:v,k:v}) 多属性设置语法,多属性没有访问
$('div').css({'height':'300px','background-color':'red'}) 多属性设置

JQ控制内容:

$('div').html('ppp'); //设置内容 对应js的innerHTML

alert( $('div').html() ) //访问内容

JQ控制类名:

$('div').addClass('box'); //添加类名

$('div').removeClass('box') //如果不写类名,表示删除所有

$('div').toggleClass('box'); //切换类 反义

JQ选择器:

1、常用选择器:

//jq中有一部分选择器和css完全相同,且含义写法都相同

// $('.box').css('background','green');

// eq == equal 等于

// $('li:eq(1)').css('background','green'); //li索引为1的标贴

// $('li').eq(0).css('background','green'); //li索引为0的标贴

// $('.box').next().css('background','green'); //下一个

//$('li').not('.box').css('background','green'); //排除某个人

// has()父级, find()子级

$('.one').has('p').css('background','green'); //选中父级

$('.two').find('p').css('background','green'); // 选中子级

2、父级选择器:

//关闭自己(事件源)的父级

$(this).parent().hide(500); //这个500是事件毫秒

3、子级选择器:

//鼠标滑过和离开,子级显示和隐藏

$(this).children('ul').toggle();

4、兄弟选择器

$(this).css('background','green');

$(this).siblings().css('background','')

链式编程

$\(this\).css\('background','green'\).siblings\(\).css\('background',''\)

// 排他思想:只许州官放火,不许百姓点灯

JQtab栏选项卡:

$('.tab li').mouseover(function(){

// $(this).addClass('active');

// $(this).siblings().removeClass();

$(this).addClass('active').siblings().removeClass();

// alert($(this).index());

//能能够让li和div对应起来的就只有下标,得到事件源li的索引值,用这个索引值去选择目标div

$('.tab .con div').eq($(this).index()).addClass('current').siblings().removeClass();

})

JQ的索引值:

$(this).index()

JQ自定义动画:

/ $('div').animate(动画过程,花费时间,运动曲线,回调函数);
//动画过程:{k:v,k:v} -- 里面写css键值对 -- 语法和css多属性是一样的css({k:v,k:v})
//运动曲线:swing linear
//回调函数:作用是当动画完成之后要执行的命令 -- function(){}
$('div').eq(0).animate({'width':'500px'},2000,'swing');
$('div').eq(1).animate({'width':'500px','height':'300px','background':'red'},2000,'linear',function(){
alert('linear运懂完成');
// animate不支持变色动画

css透明度:

` opacity: 0.6;

`

JQ透明度:

// $('div').fadeOut(500); 透明消失

//$('div').fadeIn(500); //透明显示

// $('div').fadeToggle(500) //透明综合体

// $('div').fadeTo(动画时间,透明度);透明度取值是0-1

// $('div').fadeTo(500,0.5)

JQ side—向下/向上

// $('div').slideDown(500); 向下展开显示

//$('div').slideUp(500); 向上卷起隐藏

$('div').stop().slideToggle('slow'); 'fast'

// 清除动画排队机制:在形成动画函数之前加stop()滞停动画

JQ控制html属性:

jq控制html属性是用jq方法 prop() -- 和css(k,v)单属性用法完全相同

//单属性设置和访问

$('a').prop('href','http://www.baidu.com')

alert( $('a').prop('href') );

$('a').prop('title','xxxx');

$('#who').val() 获取属性值 和 prop 一样都可以获取属性值

/清空默认文字 -- 设置val值为空 val() prop()

JQ循环,遍历: each

$('li').each(function(event){

//each中自带的一个形参表示的是选中的这些标签索引值

$(this).html(event) html是控制内容

})

获得焦点和失去焦点:

$('input').focus(function(){
// alert('ok')
//清空默认文字 -- 设置val值为空 val() prop() -- 条件:如果val值是请输入内容的时候才清空
if($(this).val() == '请输入内容'){
$(this).val('');
}
});
$('input').blur(function(){
// alert('失去焦点')
//还回默认文字内容 -- 条件:用户输入的内容是空
if($(this).val() == ''){
$(this).val('请输入内容');
}
});

JQ窗口尺寸改变

$(window).resize(function(){
// alert('ok');
//当窗口尺寸改变的时候,获取到窗口的宽度和高度
// css('width')css('height')
// width() height()
console.log($(this).width());
console.log($(this).height());
})

鼠标事件冒泡:

$('div').mouseenter(function(){
alert(1)
});
$('div').mouseleave(function(){
alert(2)
});
// 事件冒泡
// hover -- mouseenter和mouseleave

事件冒泡现象:就是点击一个会出现好几个,不是自己想要的;
解决方法:return false;

jq submit事件:

$('#forms').submit(function(){

alert('ok')

})

jq 事件委托:

语法:$('ul').delegate(真实事件源,事件类型,function(){//命令});
作用:1、提高代码执行效率;2delegate可以给未来元素(将来通过程序写入到页面的元素)绑定命令
另一种:绑定未来元素 on ,没有效率;
('li').on(事件类型,function(){
//命令
});
jq 节点控制:
// 追加节点步骤:1、声明变量保存节点数据 2、使用追加节点函数,将变量追加到页面中
var newLi = $('<li>2222</li>');
// newLi.appendTo($('ul')); //子级追加 追加到结尾
// $('ul').append(newLi) //子级结尾追加
// newLi.prependTo($('ul')) //子级追加,追加到开头处
// $('ul').prepend(newLi) //子级追加
var newDiv = $('<div>div</div>');
// 同级追加 after before insertAfter insertBefore
// newDiv.insertAfter($('ul')); //追加到 后面
// $('ul').after(newDiv) // 追加到 后面
// newDiv.insertBefore($('ul')); //追加到 前面
// $('ul').before(newDiv) //追加到前面
// $('ul').remove() 删除
// $('ul').empty() 清空

jq 正则表达式:

/js中怎么样声明一个正则表达式
// var reg = new RegExp(规则,参数)
// var reg = /规则/参数
var reg = /a/i;
var str = 'Abc'
alert(reg.test(str))
// test()检测,如果通过是true,不通过就是false
例子:var reg = /^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$/i
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

ajax 使用:

overflow: hidden

Search

    Table of Contents