前端-part10-jQuery操作样式三:函数+事件委托+阻止冒泡+鼠标事件+输入框监听

2020-07-30 14:53:43 浏览数 (1)

1.jQurey的 .each() 循环方法的使用

代码语言:javascript复制
//一般方法示例1
for (var i=0;i<$("div").length;i  ){  // 定位到所有的 div 标签并遍历其下标
    console.log($("div")[i]); // 依次打印出标签
}

//jQUery的 .each() 方法示例1
$("div").each(function(){
	console.log(this);
})

=========================================================================================================

//一般方法示例2
var a1 = [11,22,33,44];
for(var i=0;i<a1.length;i  ){
	console.log(a1[i])
}

//jQuery的 .each() 方法示例2
var a1 = [11,22,33,44];
$.each(a1,function(k,v){
	console.log(k,v);
})

=========================================================================================================

// 如何跳出某次循环 <Python 的 continue>
a = [11,22,33,44];
$.each(a,function(k,v){  // k,v jQuery 用 .each() 方法时的键值对
	if(v === 33){ // 当 v 等于 33 的时候
		return;  // return 代表continue,即不执行本次循环
	}else{
		console.log(v); // 结果依次为 11 22 44
	}
})

// 如何结束循环 <Python 的 break>
a = [11,22,33,44];
$.each(a,function(k,v){  // k,v jQuery 用 .each() 方法时的键值对
	if(v === 33){ // 当 v 等于 33 的时候
		return false;  // return false 代表break,即不再往下执行了
	}else{
		console.log(v);  // 结果依次是 11 22
	}
})

2.data() 方法的使用实例

代码语言:javascript复制
$("div").data("狗子","二哈"); // 给找到的标签绑上一个键值对
$("div").data("狗子"); // 此时可以根据 "狗子" 这个键,找到对应的 "二哈" 的这个值
$("div").data(); // 也可以直接 使用 .data() 方法,直接找出键值对

$("div").data("狗子","金毛"); // 既然可以赋值,同样可以修改它的值
$("div").data("狗子"); // 此时可以根据 "狗子" 这个键,原来的 "二哈" 变成了 "金毛"

$("div").data("猫子","布偶"); // 同样可以增加一组键值对
$("div").data(); // 此时就有了两组键值对,可以添加很多的键值对

$("div").data("列表",[11,22,33,44]); // 可以添加列表
$("div").data("data",new Data()); // 可以添加对象

3.jQuery 以及 jQurey对象 的扩展方法

代码语言:javascript复制
$.extend({ // jQuery的扩展方法
	"new_function":function(){
	console.log("我是jQuery的一个扩展方法");
	}
})
$.new_function();  // 此时执行这个扩展方法,就会打印出 "我是jQuery的一个扩展方法" 这句话


$.fn.extend({ // jQuery对象的扩展方法
	new_obj_func:function(){
	console.log("我是jQuery对象的扩展方法");
	}
})
$("div").new_obj_func(); // 此时一个 jQuery 对象执行这个扩展方法,就会打印出"我是jQuery对象的扩展方法"这句话

4.删除操作实例(事件委托)

代码语言:javascript复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>我的文件操作</title>
    <style>

    </style>
</head>
<body>
<button id="b1">添加</button>
<table border="1">
    <thead>
    <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>爱好</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>1</td>
        <td>二哈</td>
        <td>食屎</td>
        <td>
            <button class="delete">开除</button>
        </td>
    </tr>
    <tr>
        <td>2</td>
        <td>金毛</td>
        <td>装逼</td>
        <td>
            <button class="delete">开除</button>
        </td>
    </tr>
    </tbody>
</table>
<script src="jquery-3.3.1.js"></script>
<script>
    $("#b1").click(function () { // 定位到 "添加" 这个按钮

        var trEle = document.createElement("tr"); // 创造一个元素
        trEle.innerHTML = `
        <td>2</td>
        <td>柴犬</td>
        <td>切糕</td>
        <td><button class="delete">开除</button></td>
    `;
        $("tbody").append(trEle) // 添加一行
    });
    $("table").on("click",".delete",function(){  // 使用事件委托的方式给未来的标签绑定事件
        $(this).parent().parent().remove()
        //button -> td ->  tr  - > remove()
    })
</script>
</body>
</html>

5.阻止默认事件冒泡(阻断事件的继续执行)

代码语言:javascript复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>我的阻止默认事件冒泡</title>
    <style>

    </style>
</head>
<body>
<form action="">
    <input id="i1" type="text" placeholder="输入点什么我来提交">
    <input id="i2" type="submit" value="提交"> <!--form表单里面提交会刷新-->
</form>
<script src="jquery-3.3.1.js"></script>  
<script>
    $("#i2").click(function(event){
        var value = $("#i1").val();
        if (value.length===0){ // 如果我的输入为空的话
            alert("你的输入为空");
            event.preventDefault() // 阻断默认事件的进行,即浏览器不会再刷新界面
        }
    })
</script>
</body>
</html>

6.shift批量操作(特殊操作按键如 Enter、Tab、Alt 等可参照此示例摸索)

代码语言:javascript复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>我的键盘操作</title>
    <style>

    </style>
</head>
<body>

<table border="1">
  <thead>
  <tr>
    <th>#</th>
    <th>姓名</th>
    <th>操作</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td><input type="checkbox"></td>
    <td>钢铁侠</td>
    <td>
      <select>
        <option value="1">上线</option>
        <option value="2">下线</option>
        <option value="3">停职</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>雷神</td>
    <td>
      <select>
        <option value="1">上线</option>
        <option value="2">下线</option>
        <option value="3">停职</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>美国队长</td>
    <td>
      <select>
        <option value="1">上线</option>
        <option value="2">下线</option>
        <option value="3">停职</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>黑寡妇</td>
    <td>
      <select>
        <option value="1">上线</option>
        <option value="2">下线</option>
        <option value="3">停职</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="checkbox"></td>
    <td>绿巨人</td>
    <td>
      <select>
        <option value="1">上线</option>
        <option value="2">下线</option>
        <option value="3">停职</option>
      </select>
    </td>
  </tr>
  </tbody>
</table>

<input type="button" id="b1" value="全选">
<input type="button" id="b2" value="取消">
<input type="button" id="b3" value="反选">
<script src="jquery-3.3.1.js"></script>
<script>
$("#b1").click(function () {  // 全选
    $(":checkbox").prop("checked",true)
});
$("#b2").click(function () {
    $(":checkbox").prop("checked",false) // 全不选
});


    var flag = false; // 这个全局变量用来监听 shift 的按键状态
    $(window).on("keydown",function (event) { // 在键盘按下来的时候
        if(event.keyCode===16){ // 每个keyCode 代表一个按键事件,这个16代表 shift,
                                //其他的例如: Enter、Tab、Alt 等等都有对应数字与其对应的
            flag = true;
        }
    });
    $(window).on("keyup",function(event){ // 在鼠标抬起来的时候
        if(event.keyCode===16){
            flag = false; // 设定 flag 为 false
        }
    });

  $("select").on("change", function () {
    // 是否为批量操作模式
      var isChecked = $(this).parent().siblings().first().find(":checkbox").prop("checked");
    if (flag && isChecked) {
      var selectValue = $(this).val();
      // 找到所有被选中的那一行的select,选中指定值
      $("input:checked").parent().siblings().find("select").val(selectValue);
      // 默认找到全部checkbox为选中的
    }
  })
</script>
</body>
</html>

7.鼠标悬停事件之hover

代码语言:javascript复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>我的鼠标悬停</title>
    <style>
        * {
            margin: 5px;
            padding: 0;
        }

        .top-menu {
            height: 30px;
            background-color: #8e939a;
            /*position: relative;*/
        }

        .top-menu > ul {
            list-style-type: none;
            margin: 0;
            padding: 0;
        }

        .top-menu > ul > li {
            display: inline;
            line-height: 30px;
            font-size: 25px;
        }

        .items {
            position: absolute;
            left: 140px;
            top: 35px;
            background-color: cornflowerblue;
            display: none;
        }

       .top-menu > ul > li >div > a {
            font-size: 15px;
        }


        .hover > .items {
            display: block;
        }
    </style>
</head>
<body>
<div class="top-menu">
    <ul>
        <li>登录</li>
        <li>注册</li>
        <li class="shopping-car">购物车
            <div class="items">
                <a href="https://www.baidu.com/">连接到百度</a><br>
                <a href="https://www.sogou.com/">连接到搜狗</a><br>
                <a href="https://www.163.com/">连接到网易</a>
            </div>
        </li>
    </ul>
</div>
<script src="jquery-3.3.1.js"></script>
<script>
    // $(".shopping-car").hover(
    //     function () {
    //         $(this).addClass("hover");
    //     },
    //     function () {
    //         $(this).removeClass("hover");
    //     }
    // );
        $('.top-menu').on('mouseenter', '.shopping-car', function() {//绑定鼠标进入事件
        $(this).addClass('hover');
    });

    $('.top-menu').on('mouseleave', '.shopping-car', function() {//绑定鼠标划出事件
        $(this).removeClass('hover');
    });

</script>
</body>
</html>

8.实时监测输入框

代码语言:javascript复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>我的实时输入框监测</title>
    <style>
        #i1{
            width: 50%;
        }
    </style>
</head>
<body>
<input id="i1" type="text">
<script src="jquery-3.3.1.js"></script>
<script>
    $("#i1").on("input",function () {  // 实时监控输入框里面的值,打印到 Console
        var value = $(this).val();
        console.log(value);
    })
</script>
</body>
</html>

0 人点赞