Jquery事件

jQuery注册事件

1.利用原生的js来为对象注册事件,后面的会把前面的覆盖

2.用jQuery的$()来为对象注册事件,后面不会把前面的覆盖

  • 简单事件绑定-----click()---不支持同时注册,也不支持动态注册,新创建的原来有的对象的事件没有动态生成对应的事件

  • bind事件绑定的方式注册----支持同时注册---但是不支持同时注册

    $('#div').bind({
    mouseenter:function(){
    console.log('鼠标移入事件');
    },
    click:function(){
    console.log('鼠标点击');
    }
    })
  • delegate注册事件---同时注册--动态注册(本质是:事件冒泡)

    缺点是:只能注册委托事件,注册的事件太多了

    $('body').delegate('div',{
    mouseenter:function(){
    console.log('鼠标移入事件');
    },
    click:function(){
    console.log('鼠标点击');
    }
    });
  • on注册事件

    1.简单注册

    给selecor绑定事件,并且由自己触发---不支持动态注册

    $(selsctor).on('click',function(){})
  • 2.委托注册---支持动态注册 委托给父类

    $(selector),on('click','span',function(){});
    $('body').on('click','div,span',function(){
    console.log('点击事件');
    });

事件解绑

  • unbind()

    $(selector).unbind();//解绑所有
    $(selector).unbind('click')
  • undelegate()

    $(selector).undelegate();//解绑所有
    $(selector).undelegate('click')
  • off()

    $(selector).off()//解绑所有的事件
    $(selector).off('click')

事件触发

trigger():可以实现自定义事件

$('#one').on('click',function(){
console.log("点击事件");
});
$('#btn1').on('click',function(){
i++;
if(i==3){
// $('#one').click();
$('#one').trigger('click');
}
})

实现自定义事件

$('#one').on('hjz',function(){
console.log('我好帅');
});
$('#btn2').on('click',function(){
var a =confirm('请问我帅么?');
if(a){
$('#one').trigger('hjz');
}
});

案例

动态删除的事件注册
$('t_body').on('click','.get',function(){
//jQuery为了注册方便,把this指向.get
$(this).parent().parent().remove();
});

jQuery的事件对象:

注册一个事件就会生成一个事件对象:

  • 记录这个事件对象的触发时候的一些信息
  • 触发这个事件时候的一些坐标信息
  • jQuery事件中用参数e来获取
  • 是对原生js事件对象的封装,帮你解决了兼容性
  • 常用的3个坐标:
    • pageX:是页面的实际的距离左上角的值
    • pageY
    • ScreenX:屏幕左上角对可视区的距离
    • ScreenY
    • ClientX:屏幕的dom里面到可视区的距离
$('#one').on('click',function(e){
.....
});
  • 阻止事件冒泡:

    e.stopPropagation()
  • 阻止默认行为,阻止a便签的跳转

    e.preventDefault();
  • 既能阻止事件冒泡,又能阻止事件行为

    return false;
  • 获得键盘按键

    e.keycode

    $(doucument).on('keydown',function(e){
    console.log(e.keycode);
    });

jQuery的链式编程

  • 如果调用一个方法,这个方法的返回值是一个jQuery对象,然会就可以继续点出jQuery方法

  • 如果想要的jQuery对象不是我们想要的,那就不要再继续使用链式编程了

  • end();回到上一个状态

    $('#div').width().end().height(100);

    这里的返回值是数值,就不能调用end()方法

each()

$(selector).each(function(index,element){})//给每个对象执行函数

  • index:索引号
  • element:jQuery对象
$(function(){
var lis =$('#ul').children();
lis.each(function(index,element){
$(element).css('opacity',index/10);
});
});

多库共存

1.查看jQuery文件的版本

jQuery.fn.jquery
jQuery.prototype.jquery
$.fn.jquery
$.prototype.jquery

多个jQuery文件,那个文件后引入会把前面的覆盖掉

  • 谁在后面就是谁的$
var $_=$.noConflict();
写一个自制执行函数
(function($){
...写的函数
}($_))
(function(window){
window.$={
name:'黑马程序员'
};
}(window));

能释放$的控制权实现的多库共存

ready预加载事件

ready()类似于onload()事件

ready()可以写多个,按顺序执行

$(document).ready(function(){})等价于$(function(){})

案例

五角星
  • prev():上一个兄弟
  • prevAll():之前所有的兄弟
  • next():下一个兄弟
  • nextAll:()之后所有的兄弟
$(function(){
//记录实心五角星
var sw='★';
var ss='☆';
$('#ul1').on('mouseenter',function(){
//进入
$(this).text(sw).prevAll.text(sw);
$(this).nextAll().text(ss);
}).on('mouseleave',function(){
//离开
$('#ul>li').text(ss);
$('#ul>li[clickss]').text('sw').prevAll('sw');
}).on('click',function(){
//点击
$(this).attr('clickss','current').siblings().removeAttr('clickss');
});
});

jQuery的插件

<script>jquery.color.js</script>
$(function(){
//animate动画不能改变背景色
$('#btn').on('click',function(){
$('div').animate({
left:800,
width:100,
height:100,
backgrongdColor:'green'
},2000);
}) ;
});

jQuery插件库:

。。。。

jQueryUI

可以自己写jQuery的插件

jQuery的Ajax

$.ajax

jQuery的调用ajax方法:

1.$ajax({})

格式:$ajax({})

参数:

  • type:请求方式GET/POST
  • url:请求的url
  • async:是否异步,默认是true异步
  • data:发送到服务器的数据
  • dataType:预期服务器返回的数据类型
  • contentType:设置请求头
  • success:请求成功时调用此函数
  • error:请求失败时调用此函数

get请求

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body> </body>
</html>
<script src="js/jquery-3.6.0.js" type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript" charset="UTF-8">
$(function(){
$.ajax({
type:"get",
url:"",
async:true,
data:{
uname:"郝泾钊"
},
dataType:"json",//如果是json格式,会自动封装成对象
success:function(data){
var obj=JSON.parse(data);//转换字符串成json
var a =$('<ul></ul>');
//遍历
for(var i= 0 ;i<data.length;i++){
var user=data[i];
var li ='<li>'+user.username+'</li>';
a.append(li);
}
},
});
});
</script>
2.$.get

这是一个简单的GET请求功能以及取代复杂的$.ajax

请求成功时可以调用回调函数,如果需要在出错时执行函数,请用$.ajax

//请求就送文件,忽略返回值
$.get('js/cuisine_area.json');
//请求json文件,传递参数,忽略返回值
$.get('js/cuisine_area.json',{name:"tom",age:100});
//请求json文件,拿到返回值,请求成功后可以拿到返回值
$.get('js/cuisine_area.json',function(data){
console.log(data);
});
//请求json文件,传递参数,拿到返回值
$.get('js/cuisine_area.json',{name:"tom",age:"100"},function(data){
console.log(data);
});
3.$.post

这是一个简单的POST请求功能以及取代复杂的$.ajax

请求成功时可以调用回调函数,如果需要在出错时执行函数,请用$.ajax

//请求就送文件,忽略返回值
$.post('js/cuisine_area.json');
//请求json文件,传递参数,忽略返回值
$.post('js/cuisine_area.json',{name:"tom",age:100});
//请求json文件,拿到返回值,请求成功后可以拿到返回值
$.post('js/cuisine_area.json',function(data){
console.log(data);
});
//请求json文件,传递参数,拿到返回值
$.post('js/cuisine_area.json',{name:"tom",age:"100"},function(data){
console.log(data);
});
4.getJSON

getJSON方式要求返回的数据格式是json格式(json)字符串只识别json

//请求json文件,传递参数,拿到返回值
$.getJSON('js/cuisine_area.json',{name:"tom",age:"100"},function(data){
console.log(data);
});

jquery(四:jquery的事件、Ajax)的更多相关文章

  1. 恶补jquery(四)jquery中事件--冒泡

    事件 当我们在打开一个页面的时候.浏览器会对页面进行解释运行,这实际上是通过运行事件来驱动的.在页面载入事件时,运行Load()事件,是这个事件实现浏览器解释运行代码的过程. 事件机制 事件中的冒泡现 ...

  2. Jquery表单序列化和AJAX全局事件

    Jquery表单序列化 1.必须放在form标签内: 2.控件必须有name属性: 3.控件的value值会提交到服务器: 如: <form id="form1"> & ...

  3. Jquery中bind(), live(), on(), delegate()四种注册事件的优缺点,建议使用on()

    jquery中注册的事件,注册事件很容易理解偏差,叫法不一样.我第一反应就是如何添加事件,使用onclick之类的,暂时不讨论js注册事件的方法. 也看到园内前辈写过相关的帖子,但不是很详细,我找到了 ...

  4. 实战Jquery(四)--标签页效果

            这两天完毕了实战四五六的样例,实例四是标签页的实现方法,实例五是级联菜单下拉框,实例六是窗体效果,都是web层经常使用的效果.越到后面越发认为技术这东西,就是一种思路的展现,懂了要实现 ...

  5. 从零开始学习jQuery (六) jquery中的AJAX使用

    本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式. 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即 ...

  6. jQuery的4种事件绑定方法

    jQuery中提供了四种绑定事件的方法,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off: 一.on()方法(首选方法) ...

  7. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  8. jQuery源码解读-事件分析

    最原始的事件注册 addEventListener方法大家应该都很熟悉,它是Html元素注册事件最原始的方法.先看下addEventListener方法签名: element.addEventList ...

  9. JQuery(选择器、事件、DOM操作)

    一.jQuery简介 jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 库位于一个 JavaScript 文件中,其中包含了所有 ...

  10. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

随机推荐

  1. 视觉享受,兼顾人文观感和几何特征的字体「GitHub 热点速览 v.22.46」

    GitHub 上开源的字体不在少数,但是支持汉字以及其他非英文语言的字体少之又少,记得上一个字体还是 霞鹜文楷,本周 B 站知名设计 UP 主开源了的得意黑体在人文观感和几何特征之间找到了美的平衡. ...

  2. UBOOT编译--- UBOOT的顶层config.mk(五)

    1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240. 2. 概述 此文件包含在 ./Makefile 和 spl/Makefile 中. 清理状态以避免添加两次相同 ...

  3. i春秋xss平台

    点开是个普普通通的登录窗口,没有注册,只有登录,抓住包也没获取什么有用的信息,看了看dalao的wp才知道怎么做,首先抓包然后修改参数的定义来让其报错,pass原本的应该为整数,pass[]=就可以让 ...

  4. Java锁的逻辑(结合对象头和ObjectMonitor)

    我们都知道在Java编程中多线程的同步使用synchronized关键字来标识,那么这个关键字在JVM底层到底是如何实现的呢. 我们先来思考一下如果我们自己实现的一个锁该怎么做呢: 首先肯定要有个标记 ...

  5. day24 JDBC批处理(通用泛型查询方法 & 下划线转驼峰命名法)

    批处理 public static Integer addBatch(String[] sqls){ init(); try { //设置关闭自动提交 conn.setAutoCommit(false ...

  6. 【企业流行新数仓】Day03:SuperSet图表,Ranger权限、脱敏、行级别过滤,Atlas元数据、查询和查看全表/字段血缘依赖,Zabbix告警

    一.SuperSet-图表展示 1.概念 (1)概念 通过dashboard(仪表盘)对图表中的数据进行展示 BI工具:根据配置的要求,进行数据源的配置即可 是准商业级别的BI web应用 (2)原理 ...

  7. socet网络编程

    一. 网络模型 应用层   -----     HTTP协议 传输层   -----     TCP协议 网络层   -----       IP协议 链路层   -----     以太网协议 二. ...

  8. 16、SQL操作JSON字段

    Mysql5.7版本以后提供一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binar ...

  9. 浅谈Java并发

    Java并发是比较难的知识点,难于对并发的理解.并发要从操作系统和硬件层面去理解,才会比较深入,而不单单是从编程语言的逻辑去理解. 首先对于并发要清楚的几点: 线程可能在任何时刻被切换.计算机只对硬件 ...

  10. [编程基础] C和C++内置宏说明

    文章目录 1 内置的宏定义 2 运行平台宏 3 编译器宏 4 调试类型宏 5 代码 C和C++内置宏在代码调试.跨系统平台代码中会经常使用,本文记录说明一下.内置宏不需要调用头文件,可直接使用.在使用 ...