three jq

val html text 方法

val 获取表单的val

html 设置标签及内容

text 设置文本的内容

//$("div").html("<p>我是文本</p>");
// $("div").text("<p>我是文本</p>");

width与height方法

$("div").width()  获取的是width的值
$("div").innerWidth()   获取的值 包括padding和width
$("div").outerWidth()  获取的值  包括padding width border

获取屏幕的可是区域

$(window).resize(function() {
            console.log($(window).width());
            console.log($(window).height());
 });

####scrollTop和scrollLeft

获取页面被卷曲的高度

获取页面被卷曲的宽度

$(window).scroll(function() {
            console.log($(window).scrollTop());
            console.log($(window).scrollLeft());
  })

固定导航栏

需要先注册scroll事件

offset与position

offset获取相对于document的位置

position获取的是相对有定位的父元素的位置

小火箭案例

让页面的卷曲变为0

获取到body和html $(“html,body”)

做animate动画

bind和delegate 方法

bind绑定多个事件

$("p").bind({
    click: function (){
        
    },
    mouseenter: function (){
        
    }
})

delegate 事件委托

//要给div注册一个委托事件,但是最终不是由执行,而是有p执行
//第一个参数:selector:事件最终由谁来执行。
//第二个参数:事件的类型
//第三个参数:函数,要做什么
$("#box").delegate("p", "click", function (){
    console.log(this);
})

jq事件历程

简单时间绑定 bind 事件绑定 delegate事件绑定 on事件绑定

bind事件如果多个动作执行一件事情 就比较省事了

这两种方式 解决不了新增元素没有事件 旧元素有点击事件 新元素没有 跟代码位置没有关系

委托事件 可以解决新增元素没有前面注册的事件

动态创建的元素也能有事件

on事件绑定

解决注册事件需要用到多种方法

统一所有事件注册方法

on 原理一样 给自己注册 就写自己

给子元素注册委托事件 就给父元素注册事件

on 有四个参数 给自己注册事件 第二个和第三个参数放空

#####给自己注册事件 2个参数

$("p").on("click", function() {
                console.log("hah1");
 })
注册委托事件 3个参数

父元素注册 父元素有事件 新增的元素就有事件

$("#btn").click(function() {
     $("<p>牛逼了</p>").appendTo("div");
  })

$("div").on("click", "p", function() {
            console.log("哈哈哈");
 })

事件执行顺序

先执行自己的事件 在冒泡 执行外面事件 有委托和自己相关执行委托,在执行和自己无关的

表格删除功能

创建多个元素

$("#btnAdd").on("click", function() {
            $('<tr> <td>jQuery111</td> <td>传智播客-前端与移动开发学院111</td> <td><a href="javascrip:;" class="get">DELETE</a></td> </tr>').appendTo("#j_tb");
        });

要插入的节点自己写进去 copy一直出错

$li = $('<tr> <td>jQuery111</td> <td>传智播客-前端与移动开发学院111</td> <td><a href="javascrip:;" class="get">DELETE</a></td> </tr>');
$("#j_tb").append($li);

移除事件绑定 off

  • js中移除事件 on注册事件 移除 让事件伪空就可以了

​ addLisenterEvent等 用对应的解除方法

JQ移除事件绑定

bind注册的事件 用unbind

delegate注册的事件 用undelegate

上面两种方式不用了

推荐使用off

$("p").off("click");
off 参数 事件的名称

触发事件

推荐使用trigger()

trigger() 参数是事件名称

$("p").on("click", function() {
                alert("呵呵");
   })
$("#btn").on("click", function() {
            $("p").trigger("click");
            //触发p元素的事件
});
第二种
$("div").click()  直接进行调用

事件对象

使用data参数 函数中使用参数e

$("div").on("click",100, function (e) {
      console.log(e);
      console.log("哈哈,我有"+e.data);
});

阻止事件冒泡 阻止浏览器默认行为

​ //阻止 默认
//e.preventDefault();
//e.stopPropagation();
//alert(“呵呵”);
//return false;//既能阻止事件冒泡,也能阻止浏览器的默认行为。

​ ie8的阻止事件冒泡e.cancelBubble

//console.log(e.cancelBubble);
//alert(“呵呵”);

delay 方法

延迟执行事件时间

链式操作

设置性操作可以链式编程

$("div").width(200).height(200).css("backgroundColor", "pink").width()

获取性操作 不能链式

在jq中有 width和height方法直接操作 宽高

####prevAll获取前面的所有兄弟元素

####nextAll 后面所有兄弟元素

链式编程注意 对象的改变

好评案例 里面有详细例子

$(this).text(has).prevAll().text(has);
在这里使用end() 方法  可以让dom对象重新变为一个	
$(this).nextAll().text(nul);
此时的dom对象改变了

遍历jq对象 each方法 或者for

 $("li").each(function(index, element) {
        $(element).css("opacity", (index + 1) / 10);
  })
  $(element)指的就是$("li")里面的li对象

jq冲突问题

冲突就是引入的问题也需要用$符号造成的冲突

var $$ = $.noConflict() jq释放$的控制权
此时的$$就有$的功能了

猜你喜欢

转载自blog.csdn.net/qq_38964133/article/details/88377642