vlambda博客
学习文章列表

AJAX||Jquery各种选择器(js笔记)

“永远相信美好的事情即将发生”——小米

你可以不喜欢小米,但是请佩服雷军



事件

事件是JS引擎内置的,预先定义的函数变量
事件可能被游览器触发,也可能由用户触发
事件触发时,JS引擎会按照一定的规则调用这些变量的函数
事件可编程

同步 || 异步

事件的三种绑定方法:
onTYPE = function(e){}
优点:兼容性好
缺点:只能绑定一个函数,等同于写在DOM上的attribute
eventTarget.addEventListenerTYPe,function,false
可以绑多个函数,同个函数只能绑一次
IE9以下不支持
element.attachEvent(onTYPE,function  )

事件绑定

//1.
d.onclick = function(){};
//2.
var d = document.getElementById('theD');
d.addEventListener('click',function(){ });
//在chrome里 ,this —>当前元素
//IE,this->window
//3.
function divclick(){}

百度 HTML DOM事件

https://www.runoob.com/jsref/dom-obj-event.html

解绑定

1.onTYPE = null


2.eventTarget.removeEventListener(TYPE,function)
IE9以下不支持

3.element.detachEvent(onTYPE,function)
IE only

事件处理模型:事件冒泡(击鼓传花)

事件冒泡:同一事件,子元素的事件触发后再触发父元素
同一元素:先触发父元素。再触发子元素
IE没有事件捕获
触发顺序:捕获,事件执行,最后冒泡
focus,blur,change,submit,reset,selete不冒泡

阻止默认事件(冒泡的取消)

方法一,return false

document.oncontextmenu = function(e){

return false;};

方法二:e.stopPropagation()

document.addEvenListener('contextmenu',functiom(e) )

三:

var a = document.getELementById('aid');
a.addEventListener('click',function(e)){
e = e ||window.event;
if(e.preventDefault){e.preventDefault();}
else{e.returnValue = false;}
},false);

## 事件委托

利用事件冒泡,在父节点响应事件,而不是在子节点上响应事件

优点:性能更高;灵活,不需要大量操作element

AJAX

AJAX步骤

1.创建XMLHttpRequest对象 初始化

2.向服务器发送请求

3.响应函数

4.响应事件

5.Parse JSON数据格式及更新DOM

js原生实现

function loadXMLDoc(url){
   xmlHttp = null;
   if(window.XMLHttpRequest){//游览器
   
   }elseif(window.ActiveXObject){xmlHttp = new ActiveXObject('Microsoft XML Http');}//IE6.IE5
}

xmlHttp.open('GET',url + '?t=' + Math.random(),ture);
GET:将参数放在URL后面,使用&和?的方式拼写
www.taobao.com?key1=value1&key2=value2
局限:最长2048,特殊字符需要编码urlencode
可能会缓存
POST :先发HTTP头,再发参数,参数在后续的数据包中,没有长度限制,不会缓存
a:ture,异步,调用返回。数据包来的时候会触发事件
false,同步

AJAX in Jquery

jquery里都是数组
$(document).ready(){
$('#theB').click(function(){
htmlobj = $.ajax({
type : "get",
url : './json/data.json',
async : ture,
dataType:'json',
success: function(data){

       }
       
   })
});

function jsonToHTML(json){
var strTmp = $( )
}
}

JQuery

是一个js库
极大的简化了js编程
可以通过一行简单等等标记被添加到代码中
HTML元素截取
HTML元素选取
CSS操作(只能操作DOM)
HTML事件函数
js特效和动画
HTML DOM 遍历和修改

JQuery 选择器

Jquery选择器允许对HTML元素组或单个元素进行操作
Jquery选择器基于div类(class属性),类型(Tag),属性值等进行查找或者选择HTML元素
Jquery是基于原有的CSS选择器,还自定义了一些选择器
Jquery中所有选择器都以$开头

1.基础选择器

// *代表匹配所有
$('*').css('backgroud - color', 'red');
//,表示或
$('div').css('backgroud - color','red');
$('div,p').css('backgroud - color','red');
匹配id
$('#id01,#id02').css('backgroud - color','red');
匹配class
$('.class01').css('backgroud - color','red');

2.层次选择器

//直接或间接选择
$('div p').css('backgroud - color','red');
// 直接后代选择
$('span>p').css('backgroud - color','red');
//临接或不临接的后续选择(兄弟里选择)
$('p~p').css('backgroud - color','red');
//临接的后续选择(兄弟里选择)
$('p+p').css('backgroud - color','red');

3.基本过滤选择

$('div:first').css('backgroud - color','red');
$('div:last').css('backgroud - color','red');
$('div:not(.class01)').css('backgroud - color','red');
div:even :奇数        odd偶数
div:eq(0)下标
div:gt(2)从第三个开始
div:lt(2)前两个

回调 动画
function animateDiv(){
   $('div:eq(0)').animal({width:'50%'},'slow')
   $('div:eq(0)').animal({width:'100%'},'slow',animateDiv)
}
animateDiv();

$(document).ready(function(){
   $('#theB').click(function(){
       $(':anmateed').css('background','yellow');
   })
})

$('div:nth-child(3n+2)').css('background-color','red');
$('div:nth-of-type(3n)').css('background-color','red');

4.可见性过滤选择器

//display:none 或者 .input type=hidden不可见,没有它的位置
//visibility:hidden 或者 opactiy:0 不可见,但是有位置

$(':hidden').css('display','block');

5.内容过滤器

包含文本字符
$('div:contains(\'3\')').css('background-color  ','red');
空的
$('div:empty().text(123);
包含子元素或者文本
$('div:parent').css('backgroud-color','green');
包含子元素
$('div:hass(p)'.css('background-color','red');

6.属性过滤选择器

带属性的
$('div[myAttr]').css('background-color','red');
带属性且符合属性值
$('div[myAttr=\'a11'\]').css('background-color','red');
带属性但是不符合属性值
$('div[myAttr][myAttr !=\'a11']').css('background-color','')
属性值以xxx(开头^结尾$包括*
$('div[myAttr ^=\'1']').css('','')

7.表单过滤器

$(':input').css('display','none');
$(':text').css('display','none');
$(':password').css('display','none');
$(':radio').css('display','none');//按钮
$(':checkbox').css('display','none');//打勾
$(':submit ').css('display','none');//提交按钮
reset复位 button按钮image图片