python中称为模块,其余语言称为类库,DOM/BOM\JavaScript的集合
对于jQuery,不少大公司在使用时,不彻底用到,须要封装一部分想要的功能以节省流量
或者用dom,由于效果出来前要加载好jQuery文件,这涉及到流量。
概要:
查找元素(DOM不能查找自定义属性,全部标签)
选择器
筛选
操做元素
css
引入:<script src=''></script> <<script> jQuery. #引用封装的方法 $. #等于jQuery </script>
1、选择器html
$('') #获取的 document.getElementById 转换: $('')[0] = DOM对象 $(DOM对象) = $('')
1. id: $('#') 2. class: $('.') 3. 标签: $('') 4. 全部 * 5.组合 $('a,.c1,#i2') 6.层级 $('a .c1 #i2') #查找全部子孙,不单限于直系 $('a>.c1') #只找儿子 7.基本筛选 :first :last :eq(index) #等于,取第i个值 8.属性 $('[alex]') $('[alex="xxx"]') 9.表单 <input type="text" /> $(':text') 还有submit 等同于$('input[type="text"]') 还有$(':checkbox')等
示例:全选反选前端
function checkAll() { $('#tb :checkbox').prop('checked',true); #多个结果,jQuery自动循环进行prop } function cancelAll() { $('#tb :checkbox').prop('checked',false); #prop取checkbox的checked属性 } function reverseAll() { $('#tb :checkbox').each(function () { #each循环每个,function传参时传下标 if(this.checked){ this.checked = false #this代指DOM对象,故此为DOM方法 }else{ this.checked = true } }) } 方法二:jQuery获取 if($(this).prop('checked')){ $(this).prop('checked',false); }else { $(this).prop('checked',true); } 方法三:三元运算 条件?真值:假值 var v = $(this).prop('checked')?false:true; $(this).prop('checked',v)
示例:左侧菜单
功能:找到标签,添加移除class
python
$('.header').click(function () { #为每个对象绑定事件 $(this).next().removeClass('hide'); $(this).parent().siblings().find('.content').addClass('hide'); })
两句能缩为一句,链式编程,即removeClass后.xxxx,这是由于removeClass返回一个jQuery对象
2、筛选器
形式:选择器.xxx() 括号内能够加选择器,能够嵌套筛选
jquery
$(this).next() #下一个 .nextAll() .nextUntil('#i1') $(this).prev() #上一个 .prevAll() .prevUntil('#i1') $(this).parent() #父标签 .parents() .parentsUntil() $(this).children() #全部子标签 $(this).siblings() #全部兄弟标签,不包含本身 $(this).find() #查找 .first() .last() .hasClass()
3、操做编程
文本操做bootstrap
$().text() #获取文本内容 $().text('') #赋值 $().html() #获取标签代码 $().html(‘xxx’) #赋值标签代码 $().val() #对比DOM的value,获取表单文本,input、select、textarea $().val(‘’) 示例:模态对话框 添加编辑 $('.edit').click(function () { $('.model,.shadow').removeClass('hide'); var tds = $(this).parent().prevAll(); #找到全部的父标签的前面标签 var port = $(tds[0]).text(); #注意tds为jQuery对象,[0]变为DOM,要再转 var host = $(tds[1]).text(); $('.model input[name="hostname"]').val(host); #找到输入框并赋值 $('.model input[name="port"]').val(port); })
样式操做:后端
.addClass('') .removeClass('') .toggleClass('') #没有则添加,有则移除
属性操做:
app
$().attr('') #获取指定属性值 $().attr('','') #设置自定义属性值 $().removeAttr('') 专门用于checkbox,radio这种选中的操做,用attr一开始能够选中,取消后再也选不中 $().prop('checked') #选中则返回true,不然为false $().prop('checked',true)
示例:编辑模态框获取值 var tds = $(this).parent().prevAll(); tds.each(function () { #循环 var n = $(this).attr('target'); #获取属性值 var text = $(this).text(); $('.model input[name="'+ n + '"]').val(text); #须要注意的是n为变量,选择器中要加 字符串,进行并接便可 }) 示例:Tab菜单切换 $('.menu-item').click(function () { var n = $(this).attr('a'); $(this).addClass('active').siblings().removeClass('active'); #添加、移除class $('.content [b="'+ n +'"]').removeClass('hide').siblings().addClass('hide'); }) 示例:Tab菜单切换改进-经过index获取索引 $(this).addClass('active').siblings().removeClass('active'); var v = $(this).index(); $('.content').children().eq(v).removeClass('hide').siblings().addClass('hide');
标签处理:框架
添加: $().append() #括号内能够是字符串并接或者标签元素document.createElement $().prepend() #标签内 $().before() #同级标签 $().after() 删除: $().eq(index).remove() 删除第几个标签 $().eq(index).empty() 清空文本内容 复制: $().clone() 复制标签 示例: $('#b1').click(function () { var v = $('#t1').val(); var temp = "<li>" + v + "</li>"; #字符串并接,还有document.createElement方法 建立标签 $('#u1').append(temp); }) $('#b2').click(function () { var index = $('#t1').val(); $('#u1 li').eq(index).remove(); }) $('#b3').click(function () { var index = $('#t1').val(); var v = $('#u1 li').eq(index).clone(); $('#u1').append(v); })
CSS处理:
$().css('color','red') 个别样式设置 点赞例子: 知识点:- $().append() - $().remove() - setInterval clearInterval - opacity 1 -> 0 - position top right absolute 代码: var tag=document.createElement('span'); #这种方法建立标签能用于jQuery设置样式 $(tag).text('+1'); $(tag).css('color','green'); $(tag).css('fontSize',fontSize + "px"); #以px为单位 $(tag).css('position','absolute'); $(tag).css('top',top + "px"); $(tag).css('right',right + "px"); $(tag).css('opacity',opacity); $(self).append(tag); #添加标签 var obj = setInterval(function () { fontSize = fontSize + 10; #变化 top = top - 10; right = right - 10; opacity = opacity -0.1; $(tag).css('fontSize',fontSize + "px"); #从新赋值 $(tag).css('top',top + "px"); $(tag).css('right',right + "px"); $(tag).css('opacity',opacity); if(opacity<0){ clearInterval(obj); #关闭定时器 $(tag).remove(); #清除标签 } },100);
位置
$().scrollTop() #获取,括号内加选择器便可,window表示的是窗口$(window). $().scrollTop(0) #设置 $().scrollLeft() $().offset() #指定标签在html中的坐标 $().offset().left #用于获取左上角坐标 $().offset().top $().position() #标签相对于父标签(relative)的坐标,中间隔着其余标签无碍
尺寸:
$().height() #设定CSS中 'height' 的值 $().innerHeight() #内部区域高度(包括补白padding、不包括边框border) $().outerHeight() #外部高度(默认包括补白padding和边框border),默认false $().outerHeight(true)#设置为 true 时,计算边距margin在内
4、事件
事件绑定:
DOM:三种绑定方式 ——标签内onclick
document.getElementById().onclick document.getElementById().addEventListener
jQuery:
与DOM对比,开头没有on
$().click()
$().click() $().bind('click',function(){}) 经过该方式绑定的只能该方式解绑 $().unbind('click',function(){}) $().delegate('a','click',function(){}) 委托,一开始没绑定,点击的时候才绑定a且执行 $().undelegate('a','click',function(){}) 其余三种都是一开始绑定好了,添加标签a后没绑定 $().on('click',function(){}) 上面三种方式原理都是调用的on $().off('click',function(){}) 这个也能委托,$('上级标签').on('click','a',function(){}) 点击上级标签时,给全部的a标签绑定事件 事件委托delegate和on实现效果同样,只是参数位置不一样,版本一、2中有delegate
阻止事件发生:
默认a标签点击跳转,绑定onclick后,先执行onclick
分两种:默认先执行 checkbox
绑定先执行 a submit
DOM绑定时:
<a onclick="return clickOn();" href="http://www.baidu.com">zou ni</a> #要return <script> function clickOn() { alert(123); return false; #true时跳转 } </script>
jQuery绑定时:
函数内return false便可
示例:表单验证
$(':submit').click(function () { $('.error').remove(); #提交前先清空上次验证的错误信息 var flag = true; #只要为空,flag为false不跳转 $('#f1').find('input[type="text"],input[type="password"]').each(function () { var v = $(this).val(); if (v.length <= 0){ var tag = document.createElement('span'); tag.innerHTML = '必填'; tag.className = 'error'; $(this).after(tag); flag = false; //return false; #这里的return是跳出循环,不能返回给函数,至关于break } }); return flag; #返回flag,决定能不能跳转 });
事件自动执行
$(function(){ }) #页面框架加载完自动执行,能够避免加载图片慢致使事件绑定慢的问题 $().click(function(){}) #页面全部内容加载完才执行
5、jQuery扩展
方式一: $.extend({ 'wangsen':function () {return 'gg';} }) $.wangsen(); 方式二: $.fn.extend({ 'hangyang':function () {return 'db';} }); $('#i1').hangyang(); 能够写好js文件,而后引入便可使用。也可在网上找。自定义的扩展可能会重复名字,没办法避免 全局变量也可能重复,写一个自执行函数便可解决。 (function(arg){ var status = 1; #包裹在函数内,再也不是全局变量,只能本身用 arg.extend({'':function(){}}) })(jQuery) 一引入后自动执行,即自动编译好以被引用。
6、组件 =============全能========================== 后台管理的功能须要组合才能造成一个好的前端,能够网上搜组合好的模板,本身开发修改细节。 ①BootStrap -CSS样式 -JS 学习BootStrap规则 1.响应式 指针对屏幕大小切换,html样式随之变化 <style> @meida(min-width:700px){ .c2{ background-color:red; } } </style> 2.图标、字体 原理:内部是表格,表格的不一样位置画好图标,位置由unicode代码表示,使用时 复制图标对应的代码<span class="glyphicon-class">glyphicon glyphicon-euro</span> @font-face 3.基本使用 对于css文件,link引入 <link href=".../css/bootstrap.min.css" rel="stylesheet"> 对于js文件,script的src引入 <script src="...jquery/1.11.1/jquery.min.js"></script> 复制插件代码 若是要修改插件效果,先后css样式混淆,在样式内{}加上!important ============偏后台管理======================== ②jQueryUI 推荐指数*,功能不美,需修改不少 -CSS -JS 学习jQueryUI规则 ③EasyUI(代码先后端不彻底一致,功能齐全) -CSS -JS 学习EasyUI规则:下载好JS文件,在文件中引入src,而后将demo中的html相应代码复制便可 ========Ajax操做======== 轮播插件:网上如bxslider 下载后引入css、js,复制script语句和引用script的标签代码