Jquery

作者: cj小牛 | 来源:发表于2019-04-11 08:16 被阅读0次

什么是javaScript框架库

普通JavaScript的缺点:每种空间的操作方式不同意,不同浏览器下有区别封装库,要编写跨浏览器的程序非常麻烦。因此出现了很多对javaScript的

常见的Javascript框架库

Prototype、YUI(网络反响一般)、Dojo、ExtJs、jQuery (http://jquery.com)等,这些库对JavaScript进行了封装,简化了开发。这些库是对javaScript的封装,内部都是javaScript的实现。

为什么要学习Jquery

很好用

DOM对象转jQuery对象
    var btn = document.getElementById('btn");
    // $(btn) Dom对象直接转成jQuery对象
    $(btn).click(function(){ 
        $(this).css("backgroundColor",'red');
    });
  • 把jQuery 对象转Dom对象
    $(btn).get(0);转成Dom对象
    $(btn)[0];转成Dom对象

Dom复习

  • document.getElementById('id值');更加id获取元素,单个
  • document.getelementByTagName(标签的名字);根据标签的名字获取元素,有很多个
  • document.getElementByName('name属性值');多个
  • document.getElementByClassName('类的名字');多个

选择器


1.1 基本选择器

  • 根据id 来获取 $("#id"); id 值

  • 根据class来获取值 $(".className") 获取到是多个

  • 更具标签的名字来获取 $("标签的名字如p");获取到的也是多个。

  • 标签空格子标签 eg $("div p ") div里面所有的p子标签

  • 标签+ 类样式选择器 $("li.cls");

  • 多条件并列选择器 $("li ,div,p");这里里面的标签是并列关系,这里是选中所有的标签

几个常用的方法

  • html()
    .html() 相当于css中的 innerHTMl
  • text()
    .text()方法,设置标签中间现实的的文字,类似innerText
  • val()
    val("括号中有值就是设置,没有值就是读值')
  • css()
    .css(里面写属性,属性的值) 第一种表示方式
    .css({属性:属性值})第二种方式

$("*") 所有的

1.2 层级选择器

$(".outer p") class 名字叫outer 的所有子孙p标签
$(".outer>div")class 名字叫outer 的儿子div
$(".outer+div") 毗邻 outer的div
$(".outer~div") outer 后面所有直接的兄弟标签

1.3 基本筛选器

$("li:first") 列表中的第一个
$("li:eq(2)") 列表中索引为2的
$("li:lt(2)") 列表中序号小于2的
$("li:gt(2)") 列表中序号大于2的
$("li:event") 列表中隔一个算一个。
$("#uu>li:even") uu中li 的偶数行
$("#uu>li:odd") uu 中li的偶数行

1.4 属性选择器 这个是重点
$("[id = "div1"]")
$("["属性名 = "一个取的名字""]")
eg : <input type="text" value="123">
<input type="button" value="321">
$("[type = 'button']").css("color","red");//
2.0 过滤选择器
$("li").eq(2)
$("li").first()
$("li").hasclass("test")//判断li中有没有class 等于test 的 返回bool值
$("li").toggleClass("test")//样式在test 添加和移除中切换

3.0
$(".class").children().css("color","red") //名字为clolor 的所有子控件。不包括自己

  • children 只找儿字辈
    $(".class").children(".div1").css("color","red")// children 还可以限制

  • find 后代都找
    $(".class").find(".div1").css("color","red")// find 还可以限制

  • next 下一个
    $(".class").next().css("color","red") // 获取下一个元素

  • nextAll 后面同级的全部啊
    $(".class").nextAll().css("color","red")

  • nextUntil 向下到div6前
    $(".class").nextUntil(".div6").css("color","red")

  • prev() 获取的是当前元素的前一个兄弟元素
    $(this).prev().css("backgroundColor":"");

  • prevAll();获取的是当前元素前面的所有兄弟元素

  • siblings()获取当前元素以外的所有兄弟元素元素。

  • parent 父控件
    $(".class").parent().css("color","red")

  • parent s一直想上找,找到头<body>控件
    $(".class").parents().css("color","red")

  • parent 一直想上找,找到div6 下面一层
    $(".class").parentsUntil(".div6").css("color","red")

  • siblings 兄弟者一层大的都变
    $(".class").sibilings().css("color","red")

js属性操作

$(#ck).attr("id") 取属性
$(#ck),attr("id","eee")设置属性
$(#ck).attr("checked","true")//设置选中
$(#ck).removeAttr("checked","true")//删除属性

$(#ck).prop("checked","true")//设置全选属性
$(#ck).removeProp("checked","true")//删除属性
$(#ck).addClass("hidden") // 添加类样式
$("#ck").removeClass("hidden")//移除样式,不谢类名就是移除所有

遍历

li =[120,20,30]
$.eaceh(li, function(i,x)){
i索引
x 120
})

    <ul id="uu">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script src="js/jQuery.js"></script>
<script>
  $(function () {
    $("#uu>li").each(function (indx,element) {
    //这里就是通过each 相当于是遍历 得到的是索引 和对应的对象
        $(element).css("opacity",(indx+1)/10);
     });
});

</script>

val

$(":text").val()//获取指
$(":text").val("456")//设定值

append 插入。appendTo拼接到

var ele = $(".p1")
$(".div1").append(ele) //插入到div1 中
$(".p1").appendTo($(".div1"))//拼接到div中

删除 empty remove

$("div").empty() 内部内容清空
$("div").remove() 删除整个标签都删除了

动画

  • hide() 隐藏
    $("div").hide(1000); 参数是数字表示1000ms
    $("div").hide('slow')//参数是字符串600ms
    $("div").hide('normal');//参数是字符串400ms
    $("div").hide('fast');参数是字符串200ms
  • show()显示
    $("div"). show(1000);//参数是数字表示1000ms
    $("div"). show('slow')//参数是字符串600ms
    $("div"). show('normal');//参数是字符串400ms
    $("div"). show('fast');参数是字符串200ms
  • slideUp()
    $("div").slideUp(1000) ; 划入
  • slideDown() 划出
    $("div").slideDown(1000)
  • slideToggle() 切换划入划出
    $("div").slideToggle(1000)

fade动画

  • fadeIn()
    $("div").fadeIn(1000,0.5)//淡入
  • fadeOut()
    $("div").fadeOut(1000) 淡出
  • fadeToggle()
    $("div").fadeToggle(1000)淡入淡出
  • fadeTo()
    $("div")/ fadeTo(1000,0.5). fadeTo有两个参数,第一个参数是时间,第二个参数是透明度

animate 动画

  • animate({},1000,回调函数) 这个方法有3个参数 第一个参数是键值对,对象。第二个是时间,第三个是回调函数
    $("div").animate({"width":"100","height":"1000","left":"100",function(){
    可以在里面执行这个动画执行完成后的动作。
    }})

  • stop() 停止当前动画

jQuery 创建元素

  • $("标签代码")
    eg var a = $("<a href = 'http:www.baidu.con'>百度</a>") 这样就创建了一个a 标签
    $("div").append(a) 这样就给div 添加了一个子标签

jQuery中追加元素的方法

  • prepend(aObj) 把元素插入到一个元素前
  • after(aobj)添加兄弟元素
    eg: $("div").after(obj) 给div 添加obj 兄弟元素后面
  • before(obj);
    eg: $("div").before(obj) 给div 添加obj 兄弟元素前面
  • appendTo()
    eg: obj.appendTo($("div")) obj 主动添加到div上

对元素的操作

清空
  • empty() 清空里面的内容
  • html() 清空里面的内容
  • remove(). 删除自己
  • clone()克隆
设置和获取系统属性值或者自定义属性值
  • attr() 方法:可以设置属性值,两个参数。参数1.属性名
    eg $("a").attr("title","牛人"); 设置title
    eg $("a").attr("href","http://www.baicu.com")
    2.属性值
  • attr()方法:可以获取属性值,一个参数。参数的名字
    eg $("a").attr("href") 获取a的href
  • prop() 设置属性 prop('checked',true);

事件的绑定

  • bind() 下面是给btn 绑定click 方法
    $(#btn).bind("click",function(){

})

  • delegate 给dv 中的p标签添加了点击事件
    三个参数 1. 要绑定事件的元素 p
    2. 绑定的事件 click
    3. 事件触发的方法。function
    eg ("#dv").delegate("p","click",function(){
    })

  • on 方法来绑定方法
    如下eg on() 这个方法中可以有两个或者三个参数。
    on 这个方法是父元素条用的,为自己的子标签绑定事件

     $(function () {
      // 这里是两个参数,第一个参数是事件的名字,第二个参数是处理事件的函数。
      $("#btn").on("click",function () {
         $("#dv").append($("<p>这是一个p标签</p>"));
    // on方法在这里是三个参数 第一个参数是 事件的名字,第二个参数是要绑定事件的元素p。 第三个是处理事件的函数。
         $("#dv").on("click","p",function () {
            console.log("点击了里面的p标签");
         });
      });
    

    });

在这几个绑定事件的方法,使用on ,bind 和delegate 方法尽量不要用

事件的解绑
  • off
    off 对应的是on

      // 绑定事件 三个参数的 
       \$("#dv").on("click",p,function(){
        });
      // 解除绑定事件
      \ $("#div").off("click",p);
      如果是连个参数的 \$("#div".off("click"));
    
  • unbind() 解除bind() 的绑定事件

     $("#btn").bind("click",function () { 
         alert("这是bind的方法绑定的")
      });
    
      $("#btn").unbind("click"); 这是解除bind 方式的。
    
  • undelegate() 解除绑定,对应的是delegate

     $("#btn").delegate("p","click",function () {
         alert("给p标签添加事件")
     });
      $("#btn").undelegate("p","click"); //给p 标签解除绑定事件
    
  • 使用细节
    1 .如果父级元素和子级元素都是通过正常的方式绑定事件,如果通过off 解绑父级元素,父级元素事件解绑,对子级元素没有影响。

  1. 如果子级元素是父级元素通过调用delegate 的方式绑定的事件,父级元素使用off 方式解除绑定事件,这个时候父级元素和子级元素的相同的事件都会被解绑。
  • 特殊使用方法
    $(#"dv").off("click","**") 解除子控件的绑定事件,父控件的绑定事件没有改变
    $("#div").off() 移除父级元素和子级元素的绑定事件。

事件触发( 条件 要先绑定了事件 才能触发事件)

  • 触发事件: 触发一个事件的时候在该事件内部调用了其他元素的一个事件方法。他有下面几种方法

  • 1直接调用元素的事件方法 click()
    \ $("div").click();

  • 2 使用.trigger()方法
    \ $("div").trigger("触发的事件的名字 如 click");

  • 第三种方式: 使用.triggerHandle()方法
    #("#div").triggerHandler("触发事件的名字 如 click");

  • 触发事件 的区别
    $("text").focus()
    $("div").trigger("focus")
    $("div").triggerHandler("focus");
    前两中的触发方式是一样的, 最有一种触发方式虽然能触发但是看不到触发的效果。

事件对象

    $("#dv").on("click",'input',function (event) {
       //这里的event 就是事件

       console.log(event);
       // event 中有几个参数要学习下
       // 1 delegateTarget:div#dv.dv 意思是同div 给inpt元素绑定的事件
       // 2 currentTagret  当前的事件是给谁绑定的 input
       // 3 target 谁触发的事件。
   });
事件冒泡

概念: 元素中有元素,这些元素所有相同的事件,一旦最里面的元素的事件触发了,外面的所有的元素的相同的事件都会被触发。

       // 元素A中有一个元素B,A和B都有点击事件,B点击事件触发,A点击事件自动触发.如下面的例子,点击了最小的div 两个大的div 的事件也被触发了
    在每个Jquery 中添加return false;取消事件冒泡
 <div id="dv1">
   <div id="dv2">
    <div id="dv3">
    </div>
  </div>
  </div>
  <script src="js/jQuery.js"></script>
<script>
   $(function () {
     $("#dv1").click(function () {
        alert("div1被点击了"+ this.id);
     });
     $("#dv2").click(function () {
        alert("div2被点击了"+ this.id);
       });

      $("#dv3").click(function () {
         alert("div3被点击了"+ this.id);
        // 取消事件冒泡 
          return false;
       });
  });
</script>

多库共存的问题

var xy = .noConflict() 就是把. 改成xy 。用途是一个文件中导入了多个库,关键名字一样的时候用到这样的方法。

相关文章

网友评论

      本文标题:Jquery

      本文链接:https://www.haomeiwen.com/subject/hpfbrqtx.html