jQuery学习心得
表示在document.ready时执行代码
$(function(){
//1、取得要操作的对象(尽量只限制范围),如果对象多次使用要记得缓存
var $selector = $('selector');
var $target = $selector.find();
或者 var $target = $selector.children();
//2、通过find children parent closest filter等,进一步确定要操作的元素,有可能没有第二步
//eg1:要找id为abc的ul下的所有li
var $li = $("#abc").find("li");//better than $('#abc li')
});
1、粗略定位对象(选择器)$(str)
2、精确找到对象 .find .parent
3、基本属性或者样式操作 .attr .css 等
4、迭代.each
$lis = $('li');
$lis.each(function(i,item){
$(item).xxxxxxx
});
5、绑定事件 .on .off .delegate .click....
var $li = $('#abc').children('li');
$li.css('color','black').click(function () {
$li.css('color','black');
$(this).css('color','red');
});
有一组ul#abc的孩子li,点击一个把这个奇数个变红,偶数个变蓝其它的是黑色
var $lis = $('#abc').children('li');
$lis.each(function (i) {
var $li = $(this);
$li.click(function (argument) {
$lis.css('color','black');
if(i % 2 === 0){
$li.css('color','red');
} else{
$li.css('color','blue');
}
});
});
1、迭代方法
1-1、.each
1-2、.map
q1:map与each的区别
each是自迭代,对自己进行遍历,然后返回自己
map是对每一个元素执行函数,然后返回函数结果的数组
var arr = [1,2,3];
var ret = $.each(arr,function(i){
arr[i] = arr[i] + 1;
});
//arr = [2,3,4] ret = [2,3,4] arr === ret
var ret = $.map(arr,function(i){
return arr[i] + 1;
});
//arr = [1,2,3] ret = [2,3,4] arr !== ret
1-3、first 和 last 还有eq(n) slice分别是返回对象中的第一个,最后一个和第n个精确找到对象是对DOM元素的相关元素进行查找而first等是对对象本身进行查找
first firstChild
eg: ul>li
first 得到的是一个ul
firstChild 得到的是一组li
2、精确找到对象
Category: Traversing
var tabs = $('#tab').children('li');
var contents = $('#contents').children('div');
//最优解是什么? 2l
tabs.each(function(i){
var tab = $(this);
var target = contents.eq(i);
tab.click(function(){
tabs.removeClass('active');
tab.addClass('active');
contents.hide();
target.show();
});
});
// 1 + l(tab的数量)个 + N个 = N+ l
tabs.each(function(i){
var tab = $(this);
tab.click(function(){
tabs.removeClass('active');
tab.addClass('active');
contents.hide().eq(i).show();
});
});
**//不要这么写N(用户点击的次数) * 2 + 1 + N = 3N **
tabs.click(function(){
$(this).addClass('active').siblings().removeClass('active');
contents.hide().eq(tabs.indexOf(this)).show();
});
###性能
**其中属性和样式的方法没办法进行优化,其它方法是可以的,优先是这样的:**
**迭代的速度 > 简单选择器的速度(id选择器) > 精确查找的速度 > 复杂选择器的速度**
jQuery学习心得的更多相关文章
- jQuery学习心得一
1.闭包 每次看到jQuery的时候,首先想到的就是闭包.这是个老生常谈的问题了.今天重新回忆了一下闭包. 什么是闭包? 当有一个函数想要访问另一个函数内部的变量,这个是访问不了的.所有我们要用闭包来 ...
- jquery学习心得:一个很好的css和js函数调用的例子
统一目录下的资源结构图: <html><head> <link rel="stylesheet" href="gallery.css&quo ...
- jquery validate学习心得
据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~ ...
- JavaScript 秘密花园 学习心得
目的 记录一下学习心得,便于以后复习,内容是比较基础的...但是很多内容我还是不知道... 对象 对象使用和属性 1.JavaScript 中所有变量都可以当作对象使用,除了两个例外 null和dun ...
- fullpage 插件学习心得
fullpage.js 是一个基于jquery 的插件,它能够轻松的制作出高大上的全屏网站,主要功能有; 1.支持鼠标滚动 2.支持前进后退和键盘控制 3.多个回调函数 4.支持 CSS3 动画 5. ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- jquery学习(一)
简单的jquery学习,首先在页面引入jquery <!-- 引入jquery --> <script src="js/jquery-1.8.3.js" type ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- Net.Core导入EXCel文件里的数据
1.前台的表单: <form enctype="multipart/form-data" method="post" id="inportFil ...
- laravel安装[转https://laravelacademy.org/post/9528.html]
Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有必要了解下这 ...
- 用ES6的class模仿Vue写一个双向绑定
原文地址:用ES6的class模仿Vue写一个双向绑定 点击在线尝试一下 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods cla ...
- EOS 增发与生产者的奖励制度
EOS每年增发1%的机制在系统合约中,其实说每年增发1%只是一年的总数,其实是只要在出块,EOS就在增发的路途中,下面分析一下增发的代码. 其实增发的1%的都是分给所有区块生产者的,只要出块了或者获得 ...
- CocosPods 每次install pod 都卡在analyzing
最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...
- 牛客国庆集训day6 B Board (模拟标记思维或找规律或分块???)
链接:https://www.nowcoder.com/acm/contest/206/B来源:牛客网 题目描述 恬恬有一个nx n的数组.她在用这个数组玩游戏: 开始时,数组中每一个元素都是0. 恬 ...
- hdu 6512 Triangle
Problem Description After Xiaoteng took a math class, he learned a lot of different shapes, but Xiao ...
- nginx的配置文件(反向代理和主配置)
配置文件保存,是为了工作方便.特别是优化好的配置.我们基本可以直接复制粘贴.这样做可以快速的完成手上的工作!! vim nginx.conf user nginx; worker_processes ...
- sql 日期对比
来自这里
- nginx 安装第三方 模块
查看nginx在安装时开启了哪些模块 如果你nginx是rpm包安装的,直接用如下命令nginx -V 如果你是源码包编译安装,假如你的安装路径是/usr/local/nginx,那么你可以使用: / ...