diff --git "a/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.29jQuery\345\261\236\346\200\247\346\223\215\344\275\234&\344\272\213\344\273\266\347\254\224\350\256\260.md" "b/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.29jQuery\345\261\236\346\200\247\346\223\215\344\275\234&\344\272\213\344\273\266\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..fd900cc8677572ae4059980db16e19025cbbe4cb --- /dev/null +++ "b/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.29jQuery\345\261\236\346\200\247\346\223\215\344\275\234&\344\272\213\344\273\266\347\254\224\350\256\260.md" @@ -0,0 +1,610 @@ +# 11.29jQuery属性操作笔记 + +## 1.内容选择器 + +empty 作用:找到既没有文本内容也没有子元素的指定元素 + +```js + var $div = $("div:empty"); + console.log($div); + +``` + +parent 作用:找到有文本内容或有子元素的指定元素 + +```js + var $div = $("div:parent"); + console.log($div); + +``` + +contains(text) 作用:找到包含指定文本内容的指定元素 + +```js + var $div = $("div:contains('我是div')"); + console.log($div); + +``` + +has(selector) 作用:找到包含指定子元素的指定元素 + +```js + var $div = $("div:has('span')"); + console.log($div); + +``` + +## 2.属性和属性节点 + +### 2.1什么是属性? + + 对象身上保存的变量就是属性 + +### 2.2如何操作属性? + + 对象.属性名称 = 值; + + 对象.属性名称; + + 对象[“属性名称”] = 值; + + 对象[“属性名称”] + +```js + function person(){ + + } + var p = new person(); + // p.name = "inj"; + p["name"] = "zs"; + // console.log(p.name); + console.log(p['name']); + +``` + +### 2.3什么是属性节点? + +```js + + +``` + + 在编写HTML代码是,在HTMl标签只不过添加的属性就是属性节点 + + 在浏览器中找到span这个DOM元素之后,展开看到的都是属性 + + 在attributes属性中保持的所有内容都是属性节点 + +### 2.4如何操作属性节点 + + DOM元素.setAttribute(‘属性名称’,‘值’); + + DOM元素.getAttribute(‘属性名称’); + +```js + var span = document.getElementsByTagName('span')[0]; + span.setAttribute('name','ing'); + console.log(span.getAttribute('name')); + +``` + +### 2.5属性和属性节点有什么区别? + + 任何对象都有属性,但是只有DOM对象才有属性节点 + +## 3.jQuery的attr方法 + +### 3.1attr(name|pro|key,val|fn) + + 作用:获取或者设置属性节点的值 + + 可以传递一个参数,也可以传递两个参数 + + 如果传递一个参数,代表获取属性节点的值 + + 如果传递两个参数,代表设置属性节点的值 + + **注意点:** + + * 如果是获取:无论找到多少个元素,都只会返回第一个元素指定的属性节点的值 + + * 如果是设置:找到多少个元素就会设置多少个元素 + + * 如果是设置:如果设置的属性节点不存在,那么系统会自动新 + +```js + console.log($('span').attr('class')); + $('span').attr('class','box'); + $('span').attr('abc','123'); +``` +### 3.2removeAttr(name) 删除属性节点 + +会删除所有找到元素指定的属性节点 + +```js +$('span').removeAttr('class name'); + +``` + +## 4.jQuery的prop方法 + +### 4.1prop方法 + + 作用:获取或者设置属性节点的值 + + 可以传递一个参数,也可以传递两个参数 + + 如果传递一个参数,代表获取属性节点的值 + + 如果传递两个参数,代表设置属性节点的值 + + 注意点: + + * 如果是获取:无论找到多少个元素,都只会返回第一个元素指定的属性节点的值 + + * 如果是设置:找到多少个元素就会设置多少个元素 + + * 如果是设置:如果设置的属性节点不存在,那么系统会自动新增 + +```js + $("span").eq(1).prop('demo',"inj"); + console.log($("span").prop("demo")); +``` + +### 4.2removeProp方法 + + 删除属性节点 + + 注意点: + + 会删除所有找到元素指定的属性节点 + +```js +$("span").removeProp('demo'); +``` + +注意 +注意点:prop方法不仅能够操作属性,他还能操作属性节点 + + 官方推荐在操作属性节点时,具有true和false两个属性的属性节点,如checked + + ,selected 或者 disabled 使用 prop(),其他的使用 attr() + +```js + console.log($("input").prop("checked")); // true / false + console.log($("input").attr("checked")); // checked / undefined +``` + + + +## 5.jQuery操作相关的方法 + +addClass(class|fn) + 作用:添加一个类 + + 如果要添加多个,多个类之间用空格隔开即可 + +removeClass([class]|fn) + 作用:删除一个类 + + 如果要删除多个,多个类之间用空格隔开即可 + +toggleClass(class|fn[,sw]) + 作用:切换类 + + 有就删除,没有就添加 + +```js + var btns = document.getElementsByTagName('button'); + btns[0].onclick = function(){ + // $("div").addClass("class1"); + $('div').addClass('class1 class2'); + } + btns[1].onclick = function(){ + // $('div').removeClass('class2'); + $('div').removeClass('class2 class1'); + } + btns[2].onclick = function(){ + $("div").toggleClass('class2 class1'); + } +``` + + +## 6.jQuery文本值相关的方法 + +html([val|fn]) + 和原生JS中的innerHTML一模一样 + +text([val|fn]) + 和原生JS中的innerText一模一样 + +val([val|fn]) + 和原生JS中的innerVal一模一样 + + var btns = document.getElementsByTagName('button'); + btns[0].onclick = function(){ + $('div').html("
我是一个段落我是span
") + } + btns[1].onclick = function(){ + console.log($("div").html); + } + btns[2].onclick = function(){ + $("div").text("我是一个段落我是span
") + } + btns[3].onclick = function(){ + console.log($("div").text()); + } + btns[4].onclick = function(){ + $("input").val('请输入内容!'); + } + btns[5].onclick = function(){ + console.log($("input").val()); + } + + + +## 7.jQuery操作CSS样式的方法 + +点式设置 + + +```js + $("div").css("width","100px"); + $('div').css("height","100px"); + $("div").css('background',"blue"); + $('div').css('border',"5px solid red") + +``` + +链式设置 + 注意点:链式操作如果大于3步,建议分开 + +```js + $("div").css("width","100px").css("height","100px").css('background',"blue"); +``` + + +批量设置 + + +```js + $("div").css({ + width:"100px", + height:"100px", + background:"green" + }); +``` + +获取CSS样式值 + +```js +console.log($('div').css("background")); +``` + +## 8.jQuery位置和尺寸设置操作的方法 + + + +```js + $(function(){ + var btns = document.getElementsByTagName('button'); + //监听获取 + btns[0].onclick = function(){ + // 获取元素的宽度 + // console.log($('.father').width()); + // offset([coordinates]) + // 作用:获取元素距离窗口的偏移位 + console.log($(".son").offset().left) ; + //position() + // 作用:获取元素距离定位元素的偏移位 + console.log($(".son").position().left); + } + //监听设置 + btns[1].onclick = function(){ + // 设置元素的宽度 + // $(".father").width('500px'); + + // $('.son').offset({ + // left:10 + // }); + + // 注意点:position 方法只能获取不能设置 + $(".son").position({ + top:10 + }); + + $(".son").css({ + top:"10px" + }) + } + }); +``` + +## 9.jQuery 事件 + +jQuery 是为事件处理特别设计的。 + + +#### onload事件 + +在JavaScript中,onload表示文档加载完成后再执行的一个事件。window.onload只能调用一次,如果多次调用,则只会执行最后一个。 + +```html +window.onload = function(){ +…… +} + +``` + +对于JavaScript的onload事件来说,只有当页面所有DOM元素以及所有外部文件(图片、外部 CSS、外部JavaScript等)加载完成之后才会执行。这里的所有DOM元素,指的是HTML部分的代码。 + +#### ready事件 + + 在jQuery中,ready也表示文档(document)加载完成后再执行的一个事件。 + +```html +$(document).ready(function(){ + …… +}) + +``` + + 对于jQuery的ready事件来说,只要页面所有DOM元素加载完成就可以执行,不需要再等外部文件 (图片、外部CSS、外部JavaScript)加载完成。 + +#### read事件的四种写法 + +``` +//写法1: +$(document).ready(function(){ +…… +}) +//写法2: +jQuery(document).ready(function(){ +…… +}) +//写法3(最常用): +$(function(){ +…… +}) +//写法4: +jQuery(function(){ +…… +}) + +``` + + + +#### 鼠标事件 + +在jQuery中,常见的鼠标事件如下表: + +| 事件 | 说明 | +| --------- | ------------ | +| click | 鼠标单击事件 | +| dblclick | 鼠标双击事件 | +| mouseover | 鼠标移入事件 | +| mouseout | 鼠标移出事件 | +| mousedown | 鼠标按下事件 | +| mouseup | 鼠标松开事件 | +| mousemove | 鼠标移动事件 | +| | | + + + +hover:mouseover+mousedown + + jQuery 事件比JavaScript事件只是少了“on”前缀。例如鼠标单击事件在JavaScript中是onclick,而在jQuery中是 click。 + + jQuery事件的语法很简单,我们都是往事件方法中插入一个匿名函数function(){} + + + +### mouseenter为鼠标移入事件: + +```js +// 当鼠标指针进入元素时,设置背景色为黄色: +$("p").mouseenter(function(){ + $("p").css("background-color","yellow"); +}) + +``` + + + +#### 鼠标单击 + + 单击事件不只是按钮才有,我们可以为任何元素添加单击事件! + +```html + + + +
+ +