JQuery笔记

JQuery进行常见网页效果开发

JQueryJavaScript的封装库,屏蔽浏览器差异,跨浏览器兼容性好。

 

注册事件函数

ready() 

dom元素的onload事件类似,但onload只能注册一次(window.onload=function(){…})

(没有C#中的+=机制),后注册的取代先注册的,而ready则可以多次注册都会被执行。

 

JQueryreadyDomonload的区别:

onload是所有Dom元素创建完毕、图片、Css等都加载完毕后才触发,

ready则是Dom元素创建完毕后就被触发,这样可以提高网页的响应速度。

JQuery中也可以用$(window).load()来实现onload事件调用机制。

 

JQuery提供的操作数组函数:

$.map(array,fn)

对数组array中每个元素调用fn函数逐个进行处理,fn函数将处理返回,最后得到一个新数组。$.map不能处理Dictionary风格的数组。

例子:得到一个元素值是原数组值二倍的新数组

var arr=[3,5,9];

var arr2=$.map(arr,function(item){return item*2;});

 

$.each(array,fn)

对数组array中每个元素调用fn函数进行处理,没有返回值。

例子:

var dict = {“tom”:”汤姆”,”jerry”:”杰瑞”,”lily”:”丽丽”};

$.each(arr,function(key,value){alert(key+”=”+value);});

如果是普通风格数组,则key的值是序号。

还可以省略function的参数,这时候用this可以得到遍历的当前元素:

var arr=[3,5,6];

$.each(arr,function(){alert(this);})   //this代表当前元素的value

$.each(arr,function(item){alert(item);});  //item代表当前元素的key(序号)

 

JQuery对象、Dom对象

JQuery对象就是通过JQuery包装Dom对象后产生的对象,

Dom对象要想通过JQuery进行操作,先要转换为JQuery对象。

$(dom对象Dom对象转换为JQuery对象

var domobj = jqobj[0] 或者 var domobj=jqobj.get(0)  JQuery对象转换为dom对象

$(‘#div1’).html()等价于:document.getElementById(“div1”).innerHTML;

 

$(“#div1”).css(“background”,”red”);  // JQuery修改样式

$(“#div1”).css(“background”);      //获得样式

 

$(“#un”).val(“abc”);       //修改value

$(“#un”).val();           //获得value

 

$(“#div1”).text(“abc”);   //修改innerText

$(“#div1”).text();       //获得innerText

 

$(“#div1”).html(“a<font color=’red’>b</font>c”);    //修改innerHTML

$(“#div1”).html ();     //获得innerHTML

 

JQuery选择器

用于查找满足条件的元素。

$(“#控件Id”) :根据控件id获得控件的JQuery对象,相当于getElementById

$(“TagName”) :获取所有指定标签名的JQuery对象,相当于getElementByTagName

 

css选择器

同时选择拥有样式的多个元素。

<style type=text/css>

       .test{background-color:Red}

</style>

<script type=”text/javascript”>

       $(function(){$(“.test”).click(function(){alert($(this).text());});})

</script>

<p class=”test”>test1</p>

<p class=”test”>test2</p>

<p class=”test”>test3</p>

 

多条件选择器

$(“p,div,span.menuitem”) :同时选择p标签、div标签和拥有menuitem样式的span标签。

 

层次选择器

(1)    $(“div li”) 获取div下的所有li元素(包括子代)

(2)    $(“div > li”) 获取div下的直接li子元素

(3)    $(“.menuitem + div”) 获取样式名为menuitem之后的第一个div元素 (不常用)

(4)    $(“.menuitem ~ div”) 获取样式名为menuitem之后所有的div元素(不常用)

 

注意:选择器表达式中的空格不能多不能少。

 

JQuery迭代

如何判断对象是否存在?

JQuery选择器返回的是一个对象数组,调用text()html()click()之类方法的时候其实是对数组中每个元素迭代调用每个方法,因此即使通过id选择的元素不存在也不会报错,如果需要判断指定的id是否存在,应该写:

if($(“#btn1”).length<=0){

       alert(“idbtn1的元素不存在!”);

}

 

节点遍历

next() :用于获取节点之后的挨着的第一个同级的元素。

nextAll() :用于获取节点之后的所有同级元素。

$(“.menuitem”).next(“div”) 获取样式名为menuitem之后的第一个同级div元素

$(“.menuitem”).nextAll(“div”) 获取样式名为menuitem之后的所有同级div元素

点击当前div之后的所有div都变红色

$(“div”).click(function(){$(this).nextAll(“div”).css(“background”,”red”);})

 

siblings()方法用于获取所有兄弟元素

$(“.menuitem”).siblings(“li”)

点击时当前div变红色,其他变白色

$(“div”).click(function(){$(this).css(“background”,”red”); $(this).siblings(“div”).css(“background”,”white”);})

 

链式编程

高亮选中项:给所有有menuitem这个样式的元素添加click监听事件,当click的时候,向被点击的元素添加highlight这个样式,然后从兄弟节点(siblings)中移除highlight风格。

<style type=”text/css”>

   .menuitembackground-color:Yellow;

   .highlightbackground-color:Red;

</style>

$(function(){

     $(“.menuitem”).click(function(){

           $(this).addClass(“highlight”).siblings().removeClass(“hightligh0074”);

});

});

 

基本过滤选择器

:first选取第一个元素。 $(“div:first”)选取第一个<div>

:last选取最后一个元素。$(“div:last”)选取最后一个<div>

:not(选择器)选取不满足选择器条件的元素,$(“input:not(.myClass)”)选取样式名不是myClass<input>

:even :odd,选取索引是奇数、偶数的元素。$(“input:even”)选取索引是奇数的<Input>

:eq(索引序号)、:gt(索引序号)、:lt(索引序号)选取索引等于、大于、小于索引序号的元素。$(“input:lt(1)”)选取索引小于1<input>

$(“:header”)选取所有的h1…h6元素

$(“div:animated”)选取正在执行动画的<div>元素

 

 

属性过滤选择器

$(“div[id]”)选取有id属性的<div>

$(“div[title=test]”)选取title属性为“test”的<div>,JQuery中没有对getElementsByName进行封装,用$(“input[name=abc]”)

$(“div[title!=test]”)选取title属性不为”test”<div>

表单对象选择器:

$(“#form1:enabled”)选取idform1的表单内所有启动的元素

$(“#form1.disabled”)选取idform1的表单内所有禁用的元素

$(“input:checked”)选取所有选中的元素(RadioCheckBox

$(“select:selected”)选取所有选中的选项元素(下拉列表)

 

不仅可以使用选择器进行绝对定位,还可以进行相对定位,

只要在$()指定第二个参数,第二个参数为相对的元素。

$(“ul”,$(this)).css(“background”,”red”);

 

表单选择器

$(“:input”)选取所有<input><textarea><select><button>元素。

$(“input”)不一样,$(“input”)只获得<input>

$(“:text”)选取所有单行文本框。等价于 $(“input:[type=text]”)

$(“:password”)选取所有密码框。

同理还有  :radio:checkbox:submit :image:reset:button:file:hidden

 

 

JQueryDom操作

1.使用html()方法读取或设置元素的innerHTML

   alert($(“a:first”).html());

  $(“a:first”).html(“hello”);

2.使用text()方法读取或设置元素的innerText

  alert($(“a:first”).text());

  $(“a:first”).text(“hello”);

3.使用attr()方法读取或设置元素的属性,对于JQuery没有封装的属性用attr进行操作

  alert($(“a:first”).attr(“href”));

  $(“a:first”).attr(“href”,”http://www.baidu.com”);

4.使用removeAttr删除属性。注意和清空属性(值为空)的区别。

 

动态创建Dom节点

使用$(html字符串)来创建Dom节点,并且返回一个JQuery对象,然后调用append等方法将新创建的节点添加到Dom中。

 var link = $(“<a href=’http://www.baidu.com’>百度</a>”);

 $(“div:first”).append(link);  //显示出来

$()创建的就是一个JQuery对象,可以完全进行操作

 

append方法用来在元素的末尾追加元素。

prepend 在元素的开始添加元素。

after 在元素之后添加元素(添加兄弟)

before 在元素之前添加元素(添加兄弟)

 

删除节点

1.       remove()删除选择的节点

案例:删除ulli中有testitem样式的元素。

 

remove方法的返回值是被删除的节点对象,还可以继续使用被删除的节点。比如重新添加到其他节点下:

var lis=$(“#ulId li”).remove();

$(“#ulId2”).append(lis);

 

2.       empty() 将节点清空

 

3.       替换节点

$(“br”).replaceWith(“<hr/>”); <br/>替换为<hr/>

4.       包裹节点

wrap()方法用来将所有元素逐个用指定标签包裹:

$(“b”).wrap(“<font color=’red’></font>”)  将所有粗体字红色显示

 

样式操作

1.       获取样式attr(“class”)

2.       设置样式attr(“class”,”myclass”)

3.       追加样式addClass(“myclass”)

4.       移除样式removeClass(“myclass”)

5.       切换样式toggleClass(“myclass”) (如果存在样式则去掉样式,如果没有样式则添加样式)

6.       判断是否存在样式hasClass(“myclass”)

设置样式:

$(“#div1”).attr(“class”,”class1 class2”); 两个样式,中间用空格隔开

 

设置过滤器:

<style type=”text/css”>
       body{filter:Gray;}

     …

     .class1{filter:Gray;}

</style>

 

*选择器

$(“body *”) 取得body中所有控件

 

 

RadioButton操作

1.       取得RadioButton的选中值

$(“input[name=gender]:checked”).val()

2.       设置RadioButton的选中值

$(“input[name=gender]”).val([“”]);

$(“:radio[name=gender]”).val([“”]);

注意:val中参数的[]不能省略

$(“:checkbox”).val([“篮球”,”冰球”])

单独设置控件的选中状态,设定checked属性:

$(“:checkbox[value=羽毛球]”).attr(“checked”,true)

 

事件

合成事件hover, (鼠标进入、退出)

hover(enterfn,leavefn)

调用事件对象的stopPropagation()方法终止冒泡

如果想获得事件相关的信息,只要给响应的匿名函数增加一个参数:ee就是事件对象。

调用事件对象的stopPropagation()方法终止冒泡。

$(“tr”).click(function(e){alert(“tr被点击”);e.stopPropagation();});//注意函数的参数是e

 

阻止默认行为:比如超链接点击后会转向新链接、提交按钮默认会提交表单,如果想阻止默认行为只要调用事件对象的preventDefault()方法

$(“a”).click(function(e){alert(“所有超链接暂时全部禁止点击”);e.preventDefault();});

 

发生事件时鼠标的位置:pageXpageY

获得触发事件的元素:target

 

绑定事件:bind()

移除事件绑定:unbind(“click”)则只移除click事件的绑定。

(bind()相当于+= ;unbind()相当于-= ;)

 

一次性事件:one()

 

动画

show()hide()方法会显示、隐藏元素。

toggle()方法在显示、隐藏之间切换

$(“:button[value=show]”).click(function(){$(“div”).show();})

$(“:button[value=hide]”).click(function(){$(“div”).hide();})

 

 

JQuery插件:

JQuery Cookie的使用

Cookie:就是保存在浏览器上的内容,

Cookie的几个特征:

1.Cookie是与域名相关的,所以163.com不能读取baidu.com记录的Cookie

2.一个域名能写入的Cookie总尺寸是有限制的,一般是几千字节。

3.Cookie不是写入以后一定下次能读出来,浏览器可能会定期清除,用户也可能会手动清除。

使用方法:Cookie保存的是键值对

1、  添加对jquery.cookie.js的引用

2、  设置值,$.cookie(‘名字’,’’).   Cookie中保存的值都是文本

3、  读取值,var v = $.cookie(‘名字’)

if($.cookie(“UserName”))

{     //读取上次记录的用户名

          $(“#username”).val($.cookie(“UserName”));

}

$(“#btnLogin”).click(function(){

          $.cookie(“UserName”,$(“#username”).val()); //用户填写的用户名保存到Cookie

});

CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
内存分区情况的分析是嵌入式系统开发中的一个重要环节,特别是在资源有限的MCU(微控制器)环境中。标题提到的工具是一款专为分析Linux环境下的`gcc-map`文件设计的工具,这类文件在编译过程结束后生成,包含了程序在目标设备内存中的布局信息。这个工具可以帮助开发者理解程序在RAM、ROM以及FLASH等存储区域的占用情况,从而进行优化。 `gcc-map`文件通常包含以下关键信息: 1. **符号表**:列出所有定义的全局和静态变量、函数以及其他符号,包括它们的地址和大小。 2. **节区分配**:显示每个代码和数据节区在内存中的位置,比如.text(代码)、.data(已初始化数据)、.bss(未初始化数据)等。 3. **内存汇总**:总览所有节区的大小,有助于评估程序的整体内存需求。 4. **重定位信息**:显示了代码和数据如何在目标地址空间中定位。 该分析工具可能提供以下功能: 1. **可视化展示**:将内存分配以图形化方式呈现,便于直观理解。 2. **详细报告**:生成详细的分析报告,列出每个符号的大小和位置。 3. **比较功能**:对比不同编译版本或配置的`map`文件,查看内存使用的变化。 4. **统计分析**:计算各种内存区域的使用率,帮助识别潜在的优化点。 5. **自定义过滤**:允许用户根据需要筛选和关注特定的符号或节区。 虽然在MCU环境中,Keil IDE自带的工具可能更方便,因为它们通常针对特定的MCU型号进行了优化,提供更加细致的硬件相关分析。然而,对于通用的Linux系统或跨平台项目,这款基于`gcc-map`的分析工具提供了更广泛的适用性。 在实际使用过程中,开发者可以利用这款工具来: - **优化内存使用**:通过分析哪些函数或数据占用过多的内存,进行代码重构或调整链接器脚本以减小体积。 - **排查内存泄漏**:结合其他工具,比如动态内存检测工具,查找可能导致内存泄漏的部分。 - **性能调优**:了解代码执行时的内存分布,有助于提高运行效率。 - **满足资源限制**:在嵌入式系统中,确保程序能在有限的内存空间内运行。 总结来说,`gcc-amap`这样的工具对于深入理解程序的内存布局和资源消耗至关重要,它能帮助开发者做出更明智的决策,优化代码以适应不同的硬件环境。在处理`map`文件时,开发者不仅能获取到程序的内存占用情况,还能进一步挖掘出可能的优化空间,从而提升系统的整体性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值