javascript+jQuery补充
一、jQuery事件绑定
<div class='c1'>
<div>
<div class='title'>菜单一</div>
<div class='content'>内容 一</div>
</div>
<div>
<div class='title'>菜单一</div>
<div class='content'>内容 一</div>
</div>
<div>
<div class='title'>菜单一</div>
<div class='content'>内容 一</div>
</div>
<div>
<div class='title'>菜单一</div>
<div class='content'>内容 一</div>
</div>
</div>
jQuery事件绑定:
1.
$('.title').click(function(){
var v = $(this).text();
console.log(v); })
2.
$('.title').bind('click',function(){
var v = $(this).text();
console.log(v);
})
3.
$('.c1').delegate('.title','click',function(){
var v = $(this).text();
console.log(v);
}) 4.
$('.c1').on('click','.title', function () {
var v = $(this).text();
console.log(v);
});
委托绑定
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input id="txt" type="text"/>
<input id="btn" type="button" value="提交"/>
<ul>
<li>111</li>
</ul>
<script src="jquery-1.12.4.js"></script>
<script>
$('#btn').click(function () {
var v = $('#txt').val();
// var v = $(this).siblings().val();
var temp = document.createElement('li');
temp.innerHTML=v;
$('ul').append(temp);
})
// 绑定委托
$('ul').delegate('li','click',function () {
var v = $(this).text();
v = v+ '+1';
$(this).text(v);
})
</script>
</body>
</html>
页面框架加载完成:
$(function () {
...
})
使用:希望查看页面立即执行的操作
阻止默认事件的发生:
$('#bd').click(function () {
var v = $(this).text();
alert(v);
return false;
})
二、表单验证
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form id="f1" action="http://www.baidu.com" method="GET">
<p><input type="text" name="username" require="true" /></p>
<p><input type="password" name="password" require="true" min-len="6" max-len="18" /></p>
<p><input type="text" name="phone" require="true" phone="true" /></p>
<input type="submit" value="提交" />
</form> <script src="jquery-1.12.4.js"></script>
<script>
$(function () {
checkValidate();
});
function checkValidate() { $('#f1').find(':submit').click(function () {
$('#f1').find('span').remove();
var flag = true;
$('#f1').find(':text,:password').each(function () {
// $(this)代指每一个input标签
// 每一次执行都是一个标签
// 如果有某个标签的某一项不满足,调到下一个标签
var value = $(this).val();//获取标签里面的值 var require = $(this).attr('require');//获取属性,看是否是必填
if(require){
if(value.length == 0){
var n = $(this).attr('name');
var errorTag = document.createElement('span');
errorTag.innerHTML = n + '输入不能为空';
$(this).after(errorTag); flag = false;
// return true; // continue
return false; // break; }
} var minLen = $(this).attr('min-len');
if(minLen){
var valueLen = value.length;
var minLen = parseInt(minLen);
if(valueLen < minLen){
var n = $(this).attr('name');
var errorTag = document.createElement('span');
errorTag.innerHTML = n + '太短了';
$(this).after(errorTag); flag = false;
// return true; // continue
return false; // break;
}
} var phone = $(this).attr('phone');
if(phone){
// value: asdfasdf
var re = /^\d+$/;//正则匹配^行首$行尾
if(!re.test(value)){//查看正则是否匹配
var n = $(this).attr('name');
var errorTag = document.createElement('span');
errorTag.innerHTML = n + '格式错误';
$(this).after(errorTag); flag = false;
// return true; // continue
return false; // break;
}
} });
return flag;
})
}
</script>
</body>
</html>
三、jQuery扩展
扩展的两种方式
- .extend({})
- .fn.extend({})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li>1</li>
<li>1</li>
<li>1</li>
<li>1</li>
</ul>
<script src="jquery-1.12.4.js"></script>
<script>
$.extend({'alex':function () {
console.log('sb')
}});
$.alex(); $.fn.extend({'wusir':function () {
console.log('wsb',this)
}});
$('li').wusir();
</script>
</body>
</html>
自执行函数
(function(jq){
function common(){ } jq.extend({
xx: function(){
common();
} }) })($);
javascript高级
- 作用域相关
1.
function func(){
if(1==1){
var v= 123;
}
console.log(v);
}
func()
A. 报错(Java,C#) B. 123(对) C.undefined
=》 JavaScript/python是以函数为作用域,非括号为作用域
=》 括号为作用域
2.
xo = 'root1';
function func(){
var xo = 'root2';
function inner(){
console.log(xo);
}
inner();
}
func();
作用域链
// root2
3. xo = 'root1';
function func(){
var xo = 'root2';
function inner(){
console.log(xo);
}
return inner;
}
result = func();
result();
// 作用域链在函数调用之前已经创建,当寻找变量时,根据最开始创建的作用域查找
// root2 4.
xo = 'root1';
function func(){
var xo = 'root2';
function inner(){
console.log(xo);
}
xo = 'root3'
return inner;
} result = func();
result();
//root3 5.
function func(){
console.log(xo);//undefined
var xo = '123';
console.log(xo);//123
}
func()
// 提前声明,JS
1. 预编译:
var xo;
2. 执行
预编译
6.
function func(num){
console.log(num); // function
num = 18;
console.log(num); // 18
function num(){
}
console.log(num); // 18
}
func(666);
a. 预编译 AO
先编译参数:
AO.num = undefined
AO.num = 666
再编译变量:
如果AO中有num,则不做任何操作
否则 AO.num = undefined
最后编译函数:
AO.num = function num(){
}
b. 执行
7.
function func(num){
console.log(num); // function
function num(){
}
console.log(num); // function
num = 18;
console.log(num); // 18
}
func(666);
先编译参数:
AO.num = undefined
AO.num = 666
再编译变量:
如果AO中有num,则不做任何操作
否则 AO.num = undefined
最后编译函数:
AO.num = function num(){
}
8.
function func(){
console.log(xo);
var xo = 123;
}
func()
编译:
参数:
AO
变量:
AO.xo = undefined
执行:
函数和面向对象相关
1.
function func(arg){
console.log(this,arg);
}
func(18);
// func.call(window,20);
// func.apply(window,[30]); (function(arg){
console.log(this,arg);
})(123) 在函数被执行时,默认this是代指window对象 function func(){
window.nn = 'root';
//nn = 'root';
this.nn = 'root';
}
func()
console.log(nn); =====>
a. 在函数内部,默认都有this变量。默认情况下,执行函数时 this=window
b. 使用 函数名.call 或者 函数名.apply 可以对函数中的this主动设置值
2. 在JS中没有字典类型
var dict = {
name: 'alex',
age: 18
}
等价于
var dict = new Object(); # 表示创建空字典
dict.name = 'alex';
dict.age = 18;
当做对象调用的时候,var obj1 = new func('root');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function func(name) {
this.Name = name
}
var obj1 = new func('root');
console.log(obj1.Name);
var obj2 = new func('root1');
console.log(obj2.Name)
</script>
</body>
</html>
当做函数时,this是window,当做类时,this是对象
面试题
谁调用函数,this就是谁。 函数()执行时候默认window.函数()
每一个函数里都有一个this
Name = '666';
var dict = {
Name: 'root',
Age: 18,
Func: function(){
// this等于dict
console.log(this.Name); // root function inner(){
console.log(this.Name); //
}
inner();
}
} dict.Func(); ============================
谁调用函数,this就是谁。 函数()执行时候默认window.函数()
每一个函数里都有一个this
变量查找顺序,作用域链
Name = '666';
var dict = {
Name: 'root',
Age: 18,
Func: function(){
// this等于dict
console.log(this.Name); // root
// that 等于dict
var that = this; function inner(){
// this=window
console.log(that.Name); // root
}
inner();
}
} dict.Func();
3. 原型
function Foo(name){
this.Name = name;
}
// 原型
Foo.prototype = {
Func: function(){
console.log(this.Name);
}
}
obj1 = new Foo(1)
obj2 = new Foo(2)
obj3 = new Foo(3)
javascript+jQuery补充的更多相关文章
- python 全栈开发,Day57(响应式页面-@media介绍,jQuery补充,移动端单位介绍,Bootstrap学习)
昨日内容回顾 ajax //get post 两种方式 做 请求 get 主要是获取数据 post 提交数据 同一个路由地址 既可以是get请求也可以是post请求 一个路由对应一个函数 get请求 ...
- Jquery补充及插件
此篇为jQuery补充的一些知识点,详细资料请看另一篇博客,地址:https://www.cnblogs.com/chenyanbin/p/10454503.html 一.jQuery中提供的两个函数 ...
- dom&JavaScript&Jquery
目录 dom&JavaScript&Jquery 建节点 添加节点 删除节点: 替换节点: 属性节点 获取值操作 class的操作 指定CSS操作 操作节点 获取input用户输入 操 ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- jQuery操作Dom、jQuery事件机制、jQuery补充部分
jQuery操作Dom: 修改属性: //使用attr()方法 //attr(name, value) //name:要修改的属性的属性名 //value:对应的值 //attr方法,如果当前标签有要 ...
- 在线运行Javascript,Jquery,HTML,CSS代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xht ...
- javascript --- jQuery --- Deferred对象
javascript --- jQuery --- Deferred对象 javascript的函数式编程是多么引人入胜,jQuery使代码尽可能的精简,intelligent! defer - 必应 ...
- javascript/jquery读取和修改HTTP headers
javascript/jquery读取和修改HTTP headers jquery修改HTTP headers jQuery Ajax可以通过headers或beforeSend修改request的H ...
- 大量Javascript/JQuery学习教程电子书合集
[推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人 不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pd ...
随机推荐
- appcan 多按钮提示框
使用 appcan.window.alert EG: var btnList=new Array(); btnList[0]="确认"; btnList[1]="取消& ...
- black box黑盒测试
软件规格说明书 等价类划分,完备性,无冗余性(不能有交集). 健壮等价类:无效等价类 边界值分析,对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例 ...
- HDU 3061:Battle(最大权闭合图)
http://acm.hdu.edu.cn/showproblem.php?pid=3061 题意:中文题意. 思路:和上一题神似啊,比上一题还简单,重新看了遍论文让我对这个理解更加深了. 闭合图:如 ...
- Node热部署插件
一.supervisor 首先需要使用 npm 安装 supervisor(这里需要注意一点,supervisor必须安装到全局) $ npm install -g supervisor Linux ...
- springmvc上传文件踩过的坑
@RequestMapping("/addTweet") public String addTweet(TweetVO tweetVO, HttpServletRequest re ...
- bzoj3316 JC loves Mkk题解
3316: JC loves Mkk Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 979 Solved: 316[Submit][Status][Di ...
- 【Android UI】顶部or底部菜单的循环滑动效果一
实现了分页的滑动效果,做的demo流畅运行 注:貌似支持的样式(控件)有一定的限制,我试过短信的listview页面,暂无法实现滑动效果 java文件:MainActivity.java.Activi ...
- SpringBoot2.0集成WebSocket,实现后台向前端推送信息
感谢作者,支持原创: https://blog.csdn.net/moshowgame/article/details/80275084 什么是WebSocket? WebSocket协议是基于TCP ...
- Python学习4——条件、循环及其他语句总结
多种语句 打印语句: 导入语句: 赋值语句: 代码块: 条件语句: 断言: 循环: 推导: pass.dal.exec和eval : 学习到的新函数:(以下函数的应用代码均在IDLE测试通过) ch ...
- app同包同签名不能安装问题
今天博主与团队之间出现一个很郁闷的问题: 那就是我们开发的一个app,在升级推送版本的时候突然出现,相同的包名.相同的签名.在安装的时候出现,安装签名不一致(安装失败)的提示. 让我们很是困扰.后来发 ...