guanxiying

操作标签

操作类

/*
		js							jQuery
classList.add()						addClass()
classList.remove()					removeClass()
classList.contains()				hasClass()
classList.toggle()					toggleClass()
*/

css操作

<p>111</p>
<p>222</p>
<script>
$(\'p\').first().css(\'color\',\'pink\').next().css(\'color\',\'lightskyblue\')
// jQuery的链式操作 使用jQuery可以做到一行代码操作很多标签
// jQuery对象调用jQuery方法之后返回的还是当前jQuery对象 也就可以继续调用其他方法
/*
类似于jQuery的链式操作
class MyClass(object):
	def func1(self):
    	print(\'func1\')
    	return self
    def func2(self):
    	print(\'func2\')
    	return self
obj = MyClass()
obj.func1().func2()
*/
</script>

位置操作

// offset()  相对于浏览器窗口
// position() 相对于父标签
// scrollTop() 滚动条到页面顶部的距离  用来实现回到顶部的样式
// scrollLeft()  滚动条到页面左端的距离

尺寸

/*
获取纯文本的宽高
$(\'p\').height()
$(\'p\').width()

获取文本+padding之后的宽高
$(\'p\').innerHeight()
$(\'p\').innerWidth()

获取文本+padding+border之后的宽高
$(\'p\').outerHeight()
$(\'p\').outerWidth()
*/

文本操作

/*
		js							jQuery
	innerText						text()  括号中不写参数为获取值,写参数为设置值
	innerHTML						html()  同样也能够始别文本跟html
*/

$(\'div\').text()
$(\'div\').text(\'设置值\')
$(\'div\').html()
$(\'div\').html(\'<h1>能够始别html</h1>\')

获取值操作

/*
		js					jQuery
	   .value				.val()
*/
$(\'#d1\').val()
//"sasdasdsadsadad"
$(\'#d1\').val(\'520快乐\')  // 括号内不加参数就是获取加了就是设置

//获取文件时
$(\'#d2\').val()
"C:\fakepath\01_测试路由.png"
$(\'#d2\')[0].files[0]  // 牢记两个对象之间的转换(将jQuery对象转成标签对象)
File {name: "01_测试路由.png", lastModified: 1557043083000, lastModifiedDate: Sun May 05 2019 15:58:03 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 28733, …}

属性操作

/*
		js					jQuery
	 setAttribute()			attr(name,value) //添加属性
	 getAttribute()			attr(name)  //查看属性
	 removeAttribute()		removeAttr(name)  //移除属性
	 
	 用变量存储对象时:
	 js推荐使用 xxxEle来存储标签对象
	 jQuery推荐使用 $xxxEle来存储jQuery对象
*/
let $pEle = $(\'p\')
//undefined
$pEle.attr(\'id\')
//"d1"
$pEle.attr(\'class\',\'c1\')
//w.fn.init [p#d1.c1, prevObject: w.fn.init(1)]
$pEle.attr(\'id\',\'id666\')
//w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
$pEle.attr(\'pwd\',\'123\')
//w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
$pEle.removeAttr(\'pwd\')
//w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]

/*
对于标签上能够直接看到的属性或者自定义属性使用attr
对于checkbox、radio、option等以返回布尔值是否被选中的用prop
*/
$(\'#d2\').prop(\'checked\') //用法与attr相同,只不过第二个参数为布尔值
false
$(\'#d2\').prop(\'checked\')
true
$(\'#d3\').prop(\'checked\',true)
//w.fn.init [input#d3]
$(\'#d3\').prop(\'checked\',false)
//w.fn.init [input#d3]

文档处理

/*
		js							jQuery
	  createElement(\'p\')			$(\'<p>\') //创建标签
	  appendChild()					append() //添加标签
	  insertBefor()					before()  //将标签添加到指定标签的前面
*/
let $pEle = $(\'<p>\')
$pEle.text(\'文档处理之添加标签\')
$(\'#d1\').append($pEle) // 内部尾部追加
//w.fn.init [div#d1]
$(\'#d1\').prepend($pEle) //内部头部追加
//w.fn.init [div#d1]
$pEle.prependTo($(\'#d2\')) //内部头部追加
//w.fn.init [p, prevObject: w.fn.init(1)]0: plength: 1prevObject: w.fn.init [p]__proto__: Object(0)
$(\'#d2\').after($pEle)  //放在某个标签后面
//w.fn.init [p#d2]
$pEle.insertAfter($(\'span\'))  //放在某个标签后面
//w.fn.init [p, prevObject: w.fn.init(1)]
$(\'span\').before($pEle)  //放在某个标签前面
//w.fn.init [span, prevObject: w.fn.init(1)]
$(\'span\').remove() //移除标签,本身标签连带着内部的后代标签都被移除
//w.fn.init [span, prevObject: w.fn.init(1)]

$(\'#d1\').empty()  //清空标签内部所有内容 本身标签不被移除

事件

//绑定事件的两种方法
//方法一
$(\'#d1\').click(function(){
    alert(111)
})

//方法二(功能更加的强大,能支持事件委托)
$(\'#d2\').on(\'click\',function(){
    alert(222)
})

克隆事件

<!--
clone()      复制标签本身,
clone(true)  复制标签及其绑定的事件
-->
<style>
    #d1 {
        height: 100px;
        width: 100px;
        background-color: orange;
        border: 1px solid blue;
    }
</style>
<button id="d1">点点点</button>
<script>
    $(\'#d1\').on(\'click\',function () {
        // console.log(this);  // this指代是当前被操作的标签对象
        // clone默认情况下只克隆html和css 不克隆事件
        // $(this).clone().insertAfter($(\'body\'))  
        $(this).clone(true).insertAfter($(\'body\'))  // 括号内加true即可克隆事件

    })
</script>

自定义模态框

<style>
    #d2 {
        position: fixed;
        left: 0;
        top: 0;
        z-index: 99;
        width: 100%;
        height: 100%;
        background-color: black;
        opacity: 0.6;
        text-align: center;
        color: white;
    }
    #d3 {
        position: fixed;
        left: 50%;
        top: 50%;
        z-index: 100;
        width: 500px;
        height: 200px;
        transform: translate(-50%, -50%);
        background-color: white;
        text-align: center;
    }
    .hide {display: none}
</style>
<div id="d1">这是底层</div>
<button id="btn">打开模态框</button>
<div id="d2" class="hide"><p>这是模态框</p></div>
<div id="d3" class="hide"><p>这是顶层</p><button id="btn2">关闭模态框</button></div>
<script>
    $(\'#btn\').click(function () {
        $(\'#d2\').removeClass(\'hide\');
        $(\'#d3\').removeClass(\'hide\')
    });
    $(\'#btn2\').click(function () {
        $(\'#d2\').addClass(\'hide\');
        $(\'#d3\').addClass(\'hide\');
    })
</script>

左侧菜单

<style>
    .hide {display: none;}
</style>
<div class="left">
    <div class="menu">
        <div class="title">菜单一
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
        <div class="title">菜单二
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
        <div class="title">菜单三
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
    </div>
</div>

<script>
    $(\'.title\').click(function () {
        // 先给所有的items加hide
        //$(\'.items\').addClass(\'hide\');
        // 然后将被点击标签内部的hide移除
        //$(this).children().removeClass(\'hide\')
        
        //jQuery链式操作
        $(this).find(\'.items\').removeClass(\'hide\')
            .parent().siblings().find(\'.items\').addClass(\'hide\')
    })
</script>

返回顶部

<style>
    .hide {
        display: none;
    }
    #d1 {
        position: fixed;
        background-color: black;
        right: 20px;
        bottom: 20px;
        height: 50px;
        width: 50px;
    }
</style>
<body>
<div style="height: 500px;background-color: red"></div>
<div style="height: 500px;background-color: greenyellow"></div>
<div style="height: 500px;background-color: blue"></div>
<div style="height: 500px;background-color: red"></div>
<div style="height: 500px;background-color: greenyellow"></div>
<div style="height: 500px;background-color: blue"></div>
<div id="d1" class="hide"></div>

<script>
    $(window).scroll(function () {
        if($(window).scrollTop() > 100){
            $(\'#d1\').removeClass(\'hide\')
        }else{
            $(\'#d1\').addClass(\'hide\')
        }
    });
    $(\'#d1\').click(function () {
        $(window).scrollTop(0)
    })
    // $(\'#d1\').click(function () {
    //     $(\'body,html\').animate({ //添加动画,0.8秒到达顶部
    //         scrollTop:0
    //     },800)
    // })
</script>

自定义登录校验

<style>
    .error {
        color: red;
        font-size: 12px;
        display: block;
    }
</style>
<form action="">
  <div>
    <label for="username">用户名</label>
    <input type="text" on id="username" name="username">
    <span class="error" id="errorUser"></span>
  </div>
  <div>
    <label for="password">密码</label>
    <input type="password" id="password" name="password">
    <span class="error" id="errorPass"></span>
  </div>
  <div>
    <input type="button" id="btn" value="提交">
  </div>
</form>
<script>
    $(\'#username\').blur(function () {
        let username = $("#username").val();
        if (!username){
            $(\'#errorUser\').text("用户名不能为空")
        }else {
            $(\'#errorUser\').text("").focus()//获取焦点并清空文本
        }
      });
    $(\'#password\').blur(function () {
        let password = $("#password").val();
        if (!password){
            $(\'#errorPass\').text("密码不能为空")
        }else {
            $(\'#errorPass\').text("").focus()
        }
    });
</script>

input实时监控

  //input实时监控
    $(\'#username\').on(\'input\', function () {
        $(\'#errorUser\').html(\'\')
    });
    $(\'#password\').on(\'input\', function () {
        $(\'#errorPass\').html(\'\')
    })

hover事件

<script>
    // $("#d1").hover(function () {  // 鼠标悬浮 + 鼠标移开
    //     alert(123)
    // })

    $(\'#d1\').hover( //支持设置两个函数,分别实现鼠标悬浮跟鼠标移开时的效果
        function () {
            alert(\'我来了\')  // 悬浮
    },
        function () {
            alert(\'我溜了\')  // 移开
        }
    )
</script>

键盘按键按下事件。

<!--将按下的键对应的ascii码返回-->
<script>
    $(window).keydown(function (event) {
        console.log(event.keyCode)
        if (event.keyCode === 16){
            alert(\'你按了shift键\')
        }
    })
</script>

阻止后续事件执行

<script>
    $(\'#d2\').click(function (e) {
        $(\'#d1\').text(\'宝贝 你能看到我吗?\')
        // 阻止标签后续事件的执行 方式1
        // return false
        // 阻止标签后续事件的执行 方式2
        // e.preventDefault()
    })
</script>

阻止事件冒泡

<script>
        $(\'#d1\').click(function () {
            alert(\'div\')
        })
        $(\'#d2\').click(function () {
            alert(\'p\')
        })
        $(\'#d3\').click(function (e) {
            alert(\'span\')
            // 阻止事件冒泡的方式1
            // return false
            // 阻止事件冒泡的方式2
            // e.stopPropagation()
        })
</script>

事件委托

<button>是兄弟,就来砍我!!!</button>

<script>
    // 给页面上所有的button标签绑定点击事件
    // $(\'button\').click(function () {  // 无法影响到动态创建的标签
    //     alert(123)
    // })

    // 事件委托     
    $(\'body\').on(\'click\',\'button\',function () {
        alert(123)  // 在指定的范围内 将事件委托给某个标签 无论该标签是事先写好的还是后面动态创建的
    })
</script>

页面加载

# 等待页面加载完毕再执行代码
window.onload = function(){
  // js代码
}

"""jQuery中等待页面加载完毕"""
# 第一种
$(document).ready(function(){
  // js代码
})
# 第二种
$(function(){
  // js代码
})
# 第三种
"""直接写在body内部最下方"""

动画效果

$(\'#d1\').hide(5000)
w.fn.init [div#d1]
$(\'#d1\').show(5000)
w.fn.init [div#d1]
$(\'#d1\').slideUp(5000)
w.fn.init [div#d1]
$(\'#d1\').slideDown(5000)
w.fn.init [div#d1]
$(\'#d1\').fadeOut(5000)
w.fn.init [div#d1]
$(\'#d1\').fadeIn(5000)
w.fn.init [div#d1]
$(\'#d1\').fadeTo(5000,0.4)
w.fn.init [div#d1]      

补充

# each()
# 第一种方式
$(\'div\')
w.fn.init(10) [div, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
$(\'div\').each(function(index){console.log(index)})
VM181:1 0
VM181:1 1
VM181:1 2
VM181:1 3
VM181:1 4
VM181:1 5
VM181:1 6
VM181:1 7
VM181:1 8
VM181:1 9

$(\'div\').each(function(index,obj){console.log(index,obj)})
VM243:1 0 <div>​1​</div>​
VM243:1 1 <div>​2​</div>​
VM243:1 2 <div>​3​</div>​
VM243:1 3 <div>​4​</div>​
VM243:1 4 <div>​5​</div>​
VM243:1 5 <div>​6​</div>​
VM243:1 6 <div>​7​</div>​
VM243:1 7 <div>​8​</div>​
VM243:1 8 <div>​9​</div>​
VM243:1 9 <div>​10​</div>​

# 第二种方式
$.each([111,222,333],function(index,obj){console.log(index,obj)})
VM484:1 0 111
VM484:1 1 222
VM484:1 2 333
(3) [111, 222, 333]
"""
有了each之后 就无需自己写for循环了 用它更加的方便
"""
# data()
"""
能够让标签帮我们存储数据 并且用户肉眼看不见
"""
$(\'div\').data(\'info\',\'回来吧,我原谅你了!\')
w.fn.init(10) [div#d1, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
               
$(\'div\').first().data(\'info\')
"回来吧,我原谅你了!"
$(\'div\').last().data(\'info\')
"回来吧,我原谅你了!"
               
$(\'div\').first().data(\'xxx\')
undefined
$(\'div\').first().removeData(\'info\')
w.fn.init [div#d1, prevObject: w.fn.init(10)]
           
$(\'div\').first().data(\'info\')
undefined
$(\'div\').last().data(\'info\')
"回来吧,我原谅你了!"

分类:

技术点:

相关文章: