jQuery

jQuery
 
 
查找标签
基本选择器
   id选择器:
    例:
    $("#id")
 
   class选择器:
    例:
    $(".className")
 
  标签选择器:
    例:
    $("tagName")
 
  配合使用:
    例:
    $("div.c1")                         #找到c1      class 类中的div标签
 
  所有元素选择器:
    例:
    $("*")
    
  组合选择器:
    例:
    $("#id, .className, tagName")    
 
 
 
 
层级选择器:
    例:
    $("x  y");               #x的所有后代y (子子孙孙)
    $("x > y");                 # x的所有儿子y
    $("x + y")                #找到所有紧挨在x后面的y
    $("x ~ y")                # x之后所有的兄弟
 
 
 
 
基本筛选器:
    :first                        # 第一个
    例:     $("div:first")
    :last                         #最后一个
    例:     $("div:last")
    :eq(index)                #索引等于index的那个元素
    例:     $("div:eq(3)")
    :even                       #匹配所有索引值为偶数的元素,从 0 开始计数
    $("div:even")
    :odd                        #匹配所有索引值为奇数的元素,从 0 开始计数
    :gt(index)                #匹配所有大于给定索引值的元素
  :lt(index)             #匹配所有小于给定索引值的元素
    not(元素选择器) #移除所有满足not条件的标签
    has(元素选择器) #选取所有包含一个或多个标签在内的标签(指的是从后代元素中找)
例:    
    $("div:has(h1)")// 找到所有后代中有h1标签的div标签
    $("div:has(.c1)")// 找到所有后代中有c1样式类的div标签
    $("li:not(.c1)")// 找到所有不包含c1样式类的li标签
    $("li:not(:has(a))")// 找到所有后代中不含a标签的li标签
 
 
 
    
表单筛选器:
    :text
    :password
    :file
    :radio
    :checkbox
    :submit
    :reset
    :button
例:
    $(":checkbox")                      # 找到所有的checkbox
 
 
 
 
操作标签:
  样式操作
直接操作 css
    .css("color")            获取值
    .css("color","red")   设置值
 
位置操作
    offset()                       #获取匹配元素在当前窗口的相对偏移或设置元素位置
    position()                   #获取匹配元素相对父元素的偏移
    scrollTop()                 #获取匹配元素相对滚动条顶部的偏移
    scrollLeft()                 #获取匹配元素相对滚动条左侧的偏移
 
   .offset() 方法允许我们检索一个元素相对于文档(document)的当前位置
   和 .position() 的差别在于:   .position()是相对于父级元素的位移
 
 
 
尺寸:
    height()
    width()
    innerHeight()
    innerWidth()
    outerHeight()
    outerWidth()
 
 
 
文件操作:
    HTML代码:
      html()              # 获取第一个匹配元素的html内容
      html(val)         # 设置所有匹配元素的html内容
 
 
    文本值:
        text()                  # 去的所有匹配元素的内容
        text(val)             # 设置所有匹配元素的内容
 
 
    值:        
        val()                              # 取得第一个匹配元素的当前值
        val(val)                          # 设置所有匹配元素的值
        val([val1, val2])             # 设置多选的checkbox、多选select的值
 
 
 
 
属性操作
  用于id等或自定义属性: 
    attr(attrName)    # 返回第一个匹配元素的属性值
    attr(attrName, attrValue)     # 为所有匹配元素设置一个属性值
    attr({k1: v1, k2:v2})        # 为所有匹配元素设置多个属性值
    removeAttr()    # 从每一个匹配的元素中删除一个属性
    用于checkbox和radio
        prop()                          # 获取属性
        removeProp()              # 移除属性
 
 
 
prop 和 attr的区别:
    虽然都是属性,但是他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是       DOM对象属性,可以认为attr是显示的,而prop是隐式的
 
文档处理
    添加到指定元素内部的后面
        $(A).append(B)                # 把B追加到A
        $(A).prependTo(B)          # 把A追加到B
 
    添加到指定元素内部的前面
        $(A).prepend(B)              #把B前置到A
        $(A).prependTo(B)          #把A前置到B
 
    添加到指定元素外部的后面
        $(A).after(B)            # 把B放到A的后面
        $(A).insertAfter(B)    # 把A放到B的后面

    添加到指定元素外部的前面
        $(A).before(B)               # 把B放到A的前面
        $(A).insertBefore(B)       #把A放到B前面
 

    移除和清空元素
        remove()             #从DOM中删除所有匹配的元素
        empty()               #删除匹配的元素集合中的所有子节点
 
 克隆
   clone()
 
克隆示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>克隆</title>
  <style>
    #b1 {
      background-color: deeppink;
      padding: 5px;
      color: white;
      margin: 5px;
    }
    #b2 {
      background-color: dodgerblue;
      padding: 5px;
      color: white;
      margin: 5px;
    }
  </style>
</head>
<body>

<button id="b1">屠龙宝刀,点击就送</button>
<hr>
<button id="b2">屠龙宝刀,点击就送</button>

<script src="jquery-3.2.1.min.js"></script>
<script>
  // clone方法不加参数true,克隆标签但不克隆标签带的事件
  $("#b1").on("click", function () {
    $(this).clone().insertAfter(this);
  });
  // clone方法加参数true,克隆标签并且克隆标签带的事件
  $("#b2").on("click", function () {
    $(this).clone(true).insertAfter(this);
  });
</script>
</body>
</html>


 

 

 

事件
    常用事件
        click(function()  {内容})
        hover(function()  {内容})
        blur(function()  {内容})
        focus(function()  {内容})
        change(function()  {内容})
        keyup(function()  {内容})
 
keydown和keyup事件组合示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>键盘事件示例</title>
</head>
<body>

<table border="1">
  <thead>
  <tr>
    <th>#</th>
    <th>姓名</th>
    <th>操作</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td><input type="checkbox"></td>
    <td>Egon</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>Alex</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>Yuan</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>EvaJ</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>Gold</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.2.1.min.js"></script>
<script>
  // 全选
  $("#b1").on("click", function () {
    $(":checkbox").prop("checked", true);
  });
  // 取消
  $("#b2").on("click", function () {
    $(":checkbox").prop("checked", false);
  });
  // 反选
  $("#b3").on("click", function () {
    $(":checkbox").each(function () {
      var flag = $(this).prop("checked");
      $(this).prop("checked", !flag);
    })
  });
  // 按住shift键,批量操作
  // 定义全局变量
  var flag = false;
  // 全局事件,监听键盘shift按键是否被按下
  $(window).on("keydown", function (e) {
//    alert(e.keyCode);
    if (e.keyCode === 16){
      flag = true;
    }
  });
  // 全局事件,shift按键抬起时将全局变量置为false
  $(window).on("keyup", function (e) {
    if (e.keyCode === 16){
      flag = false;
    }
  });
  // select绑定change事件
  $("table select").on("change", function () {
    // 是否为批量操作模式
    if (flag) {
      var selectValue = $(this).val();
      // 找到所有被选中的那一行的select,选中指定值
      $("input:checked").parent().parent().find("select").val(selectValue);
    }
  })
</script>
</body>
</html>

按住shift键批量操作

hover示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>hover示例</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .nav {
      height: 40px;
      width: 100%;
      background-color: #3d3d3d;
      position: fixed;
      top: 0;
    }

    .nav ul {
      list-style-type: none;
      line-height: 40px;
    }

    .nav li {
      float: left;
      padding: 0 10px;
      color: #999999;
      position: relative;
    }
    .nav li:hover {
      background-color: #0f0f0f;
      color: white;
    }

    .clearfix:after {
      content: "";
      display: block;
      clear: both;
    }

    .son {
      position: absolute;
      top: 40px;
      right: 0;
      height: 50px;
      width: 100px;
      background-color: #00a9ff;
      display: none;
    }

    .hover .son {
      display: block;
    }
  </style>
</head>
<body>
<div class="nav">
  <ul class="clearfix">
    <li>登录</li>
    <li>注册</li>
    <li>购物车
      <p class="son hide">
        空空如也...
      </p>
    </li>
  </ul>
</div>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
$(".nav li").hover(
  function () {
    $(this).addClass("hover");
  },
  function () {
    $(this).removeClass("hover");
  }
);
</script>
</body>
</html>

hover事件
事件绑定
    .on(events[,selector],function(){})
    events : 事件
    selector : 选择器
    function : 事件处理函数

 

 

阻止事件冒泡:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>阻止事件冒泡</title>
</head>
<body>
<div>
    <p>
        <span>点我</span>
    </p>
</div>
<script src="jquery-3.3.1.min.js"></script>
<script>
    $("span").click(function (e) {
        alert("span");
        e.stopPropagation();
    });

    $("p").click(function () {
        alert("p");
    });
    $("div").click(function () {
        alert("div");
    })
</script>
</body>
</html>

 

 

 

事件委托
    事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件

示例:

表格中每一行的编辑和删除按钮都能触发相应的事件。

$("table").on("click", ".delete", function () {
  // 删除按钮绑定的事件
})
posted @ 2018-09-12 19:07  惊世风情  阅读(81)  评论(0编辑  收藏  举报