`
dwj147258
  • 浏览: 194817 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JQuery学习(二)

阅读更多

   声明:原文http://blog.csdn.net/csh624366188/article/details/7679187

一:动态创建元素

首先来看一个例子

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>动态创建对象</title>
</head>
<body>
<div id="testDiv">测试图层</div>
<script type="text/javascript">
    document.getElementById("testDiv").innerHTML = "<div style=\"border:solid 1px #FF0000\">动态创建的div</div>";
</script>
</body>
</html>

 

 运行后如上图所示:

这段代码就是通过dom的innerhtml插入了一段html代码,但是这是错误的做法:

首先:在页面加载时改变了页面的结构. 在IE6中如果网络变慢或者页面内容太大就会出现"终止操作"的错误. 也就是说"永远不要在页面加载时改变页面的Dom模型".

其次:使用修改HTML内容添加元素, 不符合Dom标准. 在实际工作中也碰到过使用这种方法修改内容后, 某些浏览器中并不能立刻显示添加的元素, 因为不同浏览器的显示引擎是不同的. 但是如果我们使用Dom的CreateElement创建对象, 在所有的浏览器中几乎都可以. 但是在jQuery中如果传入的而是一个完整的HTML字符串, 内部也是使用innerHTML. 所以也不是完全否定innerHTML函数的使用.

 

下面介绍两种创建新元素的方式

①使用html dom创建

什么是 DOM?

通过 JavaScript,您可以重构整个 HTML 文档。您可以添加、移除、改变或重排页面上的项目。

要改变页面的某个东西,JavaScript 就需要对 HTML 文档中所有元素进行访问的入口。这个入口,连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。

在 1998 年,W3C 发布了第一级的 DOM 规范。这个规范允许访问和操作 HTML 页面中的每一个单独的元素。

所有的浏览器都执行了这个标准,因此,DOM 的兼容性问题也几乎难觅踪影了。

DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。

DOM 被分为不同的部分(核心、XML及HTML)和级别(DOM Level 1/2/3):

Core DOM

定义了一套标准的针对任何结构化文档的对象

XML DOM

定义了一套标准的针对 XML 文档的对象

HTML DOM

定义了一套标准的针对 HTML 文档的对象。

下面这个例子介绍了如何使用dom创建元素

  //使用Dom标准创建元素
    var select = document.createElement("select");
    select.options[0] = new Option("加载项1", "value1");
    select.options[1] = new Option("加载项2", "value2");
    select.size = "2";
    var object = testDiv.appendChild(select);

通过dom的createElement创建一个dom元素,再通过appendChild方法添加到指定对象上

②使用JQuery

$("<div style=\"border:solid 1px #FF0000\">动态创建的div</div>")这段代码表示创建一个div元素,JQuery创建元素主要就是使用的JQuery(html,ownerDocument)方法,该方法返回的是一个JQuery对象,这个方法中html参数代表的是一个html字符串,ownerDocument是创建元素所在的文档,下面是Jquery文档中对这个方法的描述

动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中。在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性。

jQuery 代码:
$("<div><p>Hello</p></div>").appendTo("body");描述:
创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。

jQuery 代码:
// 在 IE 中无效:
$("<input>").attr("type", "checkbox");
// 在 IE 中有效:
$("<input type='checkbox'>");描述:
动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中。在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性。

jQuery 代码:
$("<div>", {
  "class": "test",
  text: "Click me!",
  click: function(){
    $(this).toggleClass("test");
  }
}).appendTo("body");描述:
创建一个 <input> 元素,同时设定 type 属性、属性值,以及一些事件。

jQuery 代码:
$("<input>", {
  type: "text",
  val: "Test",
  focusin: function() {
    $(this).addClass("active");
  },
  focusout: function() {
    $(this).removeClass("active");
  }
}).appendTo("form");

 ③将元素添加到对象上

我们可以使用上面两种方式创建一个而元素但是上面已经提到一定不要在页面加载时就改变页面的DOM结构比如添加一个元素正确的做法是在页面加载完毕后添加或删除元素.

传统上使用window.onload完成上述目的:

//DOM加载完毕后添加元素

//传统方法

window.onload = function() { testDiv.innerHTML = "<div style=\"border:solid 1px #FF0000\">动态创建的div</div>"; }

虽然能够在DOM完整加载后在添加新的元素但是不幸的是浏览器执行window.onload函数不仅仅是在构建完DOM树之后也是在所有图像和其他外部资源完整的加载并且在浏览器窗口显示完毕之后所以如果某个图片或者其他资源加载很长时间访问者就会看到一个不完整的页面甚至在图片加载之前就执行了需要依赖动态添加的元素的脚本而导致脚本错误.

解决办法就是等DOM被解析后在图像和外部资源加载之前执行我们的函数.jQuery中让这一实现变得可行:

//jQuery 使用动态创建的$(document).ready(function)方法

$(document).ready(

        function() { testDiv.innerHTML = "<div style=\"border:solid 1px #FF0000\">使用动态创建的$(document).ready(function)方法</div>"; }

 

);

//jQuery 使用$(function)方法

$(

        function() { testDiv.innerHTML += "<div style=\"border:solid 1px #FF0000\">使用$(function)方法</div>"; }

);

使用$()将我们的函数包装起来即可而且可以在一个页面绑定多个函数如果使用传统的window.onload则只能调用一个函数.

所以请大家将修改DOM的函数使用此方法调用另外还要注意document.createElementinnerHTML的区别如果可以请尽量使用document.createElement$("<div/>")的形式创建对象.

二JQuery包装集的各个函数

1.文档加载完成执行函数
 $(document).ready(function(){
 alert("开始了");
 });

 

2.添加/删除CSS
 $("#some-id").addClass("NewClassName");
 $("#some-id").removeClass("ClassNameToBeRemoved");



3.选择符 :利用了CSSXpathXML Path Language)选择符的能力,以及jQuery独有的选择符


 3.1常用的:
 1.根据标签名: $('p') 选择文档中的所有段落
 2. 根据ID: $("#some-id")
 3.类: $('.some-class')


 3.2使用CSS选择符:
 $("#some-id > li") 选择特定id下的所有子li元素
 $("#some-id li:not(.horizontal)") 伪类选择,特定id下所有没有.horizontal 类的li元素


 3.3使用XPath选择符:
 属性选择:$("a[@title]") 选择所有带title属性的链接
 $("div[ol]") 选择包含一个ol元素的所有div元素
 $('a[@href^="mailto:%22]'选择所有带href属性[@href]且该属性值以mailto开头^="mailto"^标识字符串开始,$标识字符串结尾,*表示字符串中任意位置)
 $('a[@href$=".pdf"]') 选择带有href属性且该属性值以.pdf结尾的所有链接
 $('a[@href*="mysite.com"]') 选择mysite.com出现在href任意位置(包含mysite.com)的所有链接


 3.4JQuery自定义选择符(过滤器,从已选择的结果集中过滤出符合某一条件的所有元素),与CSS的伪类选择符相似,使用:开头
 1.$('div.horizontal:eq(1)') 选择带有类horizontaldiv集合中的第2个项
 $('div:nth-child(1)') 选择作为其父元素第1个子元素的所有div
 2.自定义选择符:odd:even选择奇偶行
 $('tr:odd').addClass('odd'); //过滤选择结果集中的奇数元素
 $('tr:even').addClass('even'); //过滤选择结果集中的偶数元素
 3.自定义选择符:contains()
 $('td:contains("Henry")') 选择包含Henry字符串的所有表格


 3.5JQuery选择函数
 1.$('#some-id').parent() 选择特定元素的父元素
 2.$('#some-id').next() 选择特定元素最近的下一个同级元素
 3.$('#some-id').siblings() 选择特定元素的所有同级元素
 4.$('#some-id').find('.some-class') 选择特定元素下所有包含特定类的元素
 5.$('#some-id').find('td').not(':contains("Henry")') 选择特定元素下表格内容不包含Henry的所有元素
 5.$('#some-id').find('td').not(':contains("Henry")').end() .end()表示回到最后一次.find()的元素处


 3.6访问DOM元素,使用get()方法从选择后的JQuery对象中获得,去掉JQuery的包装
 var myTag = $('#some-id').get(0).tagName;
 var myTag = $('#some-id')[0].tagName; //与上面的等效

4.事件(都是给某一元素绑定事件)


 4.1绑定事件
 $("#some-id").bind("click", function(){ })
 $("#some-id").unbind("click", bindedFunctionName); //移除已绑定的事件,前提是绑定的函数有名称(不是匿名函数)
 $("#some-id").click(function(){ })

 


 4.2复合函数绑定事件
 $("#some-id").toggle(function(){ } ,function(){ }); //交替执行
 $(#some-id).toggleClass("hidden"); // 添加/删除类交替进行
 $("#some-id").hover(function(){ }, function(){ }); //鼠标进入元素时执行第一个函数,离开元素时执行第二个函数
 $("#some-id").one("click", functionName); //只需触发一次,随后便立即解除绑定

 


 4.3模仿用户触发某一事件
 $("#some-id").trigger("click"); //触发特定元素的click事件

 

5.为元素添加效果


 5.1读取或设置CSS样式属性
 $("#some-id").css("property") //读取样式值
 $('#some-id').css('property', 'value') //设置一个样式值
 $('#some-id').css({property1: 'value1', property2: 'value2'}) //设置多个样式属性


 5.2改变字体大小
 $(document).ready({
 $('#button-id').click(function(){
 var currentSize = $('#text-id').css('fontSize'); //获取字体大小,如30px
 var num = parseFloat(currentSize, 10); //将值转为浮点数,.parseFloat( , )javascript内置函数,这里是转为10进制的浮点数
 var unit = currentSize.slice(-2); //获取单位名称,如px.slice()javascript内置函数,获取字符串指从定位置开始的子字符串,-2表示倒数两个字符
 num *= 1.5;
 $('text-id').css('fontSize', num + unit); //设置字体大小样式
 });
 });


 5.3隐藏和显示
 $('#some-id').show(); //无效果,会自动记录原来的display属性值(如:block, inline),再回复display
 $('#some-id').hide(); //无效果,等效于:$('#some-id').css('display', 'none'); 隐藏元素,不保留物理位置
 大小、透明度逐渐变化的显示或隐藏
 $('#some-id').show('slow'); //指定显示速度,在指定时间内元素的高、宽、不透明度逐渐增加到属性值,有:slow0.6秒,normal0.4秒,fast0.2秒,或者直接填入毫秒数
 $('#some-id').hide(800); //.show()指定速度显示一样,指定时间内高、宽、不透明度逐渐减小到0
 淡入淡出
 $('some-id').fadeIn('slow'); //指定时间内不透明度属性值由0增加到1
 $('some-id').fadeOut('slow'); //指定时间内不透明度值由1减小到0

 


 5.4构建具有动画效果的show
 主要调用.animate()方法,其有4个参数:包含样式属性及值的映射;可选的速度参数;可选的缓动类型;可选的回调函数;
 1.并发显示多个效果
 $('#some-id').animate({height: 'show', width: 'show', opacity: 'show'}, 'slow', function(){ alert('动画显示元素');});
 $('div .button').animate({left:600, height:44}, 'slow'); //水平位置从0移动到600,高度由0增加到44
 2.排队显示多个效果,级联多个.animate(),一个效果显示完了再显示下一个效果
 $('#some-id').animate({left:600}, 'slow').animate({height: 44}, 'slow');

6。DOM操作


 6.1属性操作
 $('#some-id').attr('property'); //获取属性
 $('#some-id').attr('property','value'); //设置属性
 $('#some-id').attr({'property1': 'value1', 'property2': 'value2'}); //设置多个属性
 修改一个段落中所有链接,并给每个链接附上新的id
 $('div p .content a').each(function(index){
 $(this).attr({
 'rel': 'external',
 'id': 'link_' + index
 });
 });
 // ********* JQuery.each()类似一个迭代器,给其传递的参数index类似一个计数器 *********

 


 6.2插入新元素
 1.将元素插入到其他元素前面:.insertBefore().before()
 2.将元素插入到其他元素后面:.insertAfter()after()
 3.将元素插入到其他元素内部或后面(相当于追加一个元素):appendTo()append()
 4.将元素插入到其他元素内部或前面(相当于追加一个元素):prependTo()prepend()


 6.3包装元素,将元素包装到其他元素中 .wrap();
 $('#some-id').wrap('<li></li>'); // 将某一特定元素包装到li中,即在特定元素外围添加一个包围元素


 6.4复制元素 .clone()
 1.$('#some-id').clone().appendTo($('body'));
 2.复制深度,当传入false参数时,只复制匹配上的元素,其内部的其他元素不复制
 $('#some-id').clone(false)
 注意:.clone()方法不会复制元素中的事件


 6.5移除匹配元素中的元素,类似清空元素
 $('#some-id').empty();


 6.6DOM中移除匹配的元素及其后代元素
 $('#some-id').remove();

 

 

  • 大小: 534 Bytes
分享到:
评论

相关推荐

    jquery资料--jquery学习资料

    **jQuery学习资料详解** jQuery,一个轻量级、高性能的JavaScript库,自2006年发布以来,因其简洁易用的API接口和强大的功能,迅速成为开发者们首选的前端工具之一。本资料旨在深入浅出地介绍jQuery的核心概念、...

    jquery经典学习手册

    ### 二、jQuery的基本用法 1. **引入jQuery库**:通常,我们会通过在HTML文档的`&lt;head&gt;`标签内引入jQuery库的CDN链接或本地文件。 ```html &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; `...

    Jquery学习笔记Jquery学习笔记

    Jquery学习笔记 Jquery学习笔记是指使用Jquery框架来实现javascript编程的笔记记录,本笔记记录了Jquery-1.2的基本用法、Ajax异步交互、XMLHttpRequest对象的基本应用等知识点。 一、Jquery基本用法 Jquery是一个...

    JQuery学习资料与源代码

    **jQuery学习资料与源代码详解** jQuery是一款广泛应用于Web开发的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。这个压缩包中的"JQuery学习资料与源代码"包含了从基础到进阶...

    jquery手册jquery的学习jquery的学习

    二、jQuery选择器 jQuery的选择器类似于CSS选择器,用于选取HTML元素。例如,`$("#id")`选择ID为"id"的元素,`$(".class")`选择所有class为"class"的元素,`$("tag")`选择所有tag类型的元素。jQuery还支持更复杂的...

    jquery学习资料

    **jQuery学习资料** jQuery是一款广泛应用于前端开发的JavaScript库,它极大地简化了JavaScript代码的编写,使得DOM操作、事件处理、动画制作等任务变得更加简单。本资料包包含了jQuery的学习资源,包括PPT教程和...

    jquery 教程 jQuery学习资料 jQuery学习

    二、jQuery API jQuery API_CHM.CHM文件包含了jQuery的完整文档,其中详细列出了jQuery的所有函数、方法和属性。以下是一些关键API的简介: 1. `$()`: 这是jQuery的主要构造函数,用于创建jQuery对象,通常用于包裹...

    [jQuery实战第二版].pdf

    总之,《jQuery实战第二版》不仅为初学者提供了一个系统学习jQuery的起点,也为有经验的开发者提供了一个深入研究和提高技能的宝贵资源。通过本书的学习,读者可以更好地掌握jQuery的强大功能,并将其应用于实际项目...

    jquery学习大全

    **jQuery学习大全** jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript代码的编写,使得网页交互变得更加简单。作为初学者,了解并掌握jQuery是成为Web开发高手的重要步骤。本资源包"jQuery学习大全...

    jquery 学习手册

    这部“jQuery学习手册”旨在为初学者提供一个全面且易懂的教程,涵盖jQuery的核心概念、属性、选择器、事件、CSS操作、文档处理、效果和筛选等多个关键领域。 **一、jQuery核心** jQuery的核心是其简洁的API(应用...

    jquery 学习笔记

    **jQuery学习笔记** jQuery,作为一个轻量级的JavaScript库,极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。这篇学习笔记将深入探讨jQuery的核心概念和实用技巧,帮助初学者快速上手。 ## 一...

    jquery学习文档

    ### jQuery学习文档详解 #### 一、jQuery简介与特点 **1.1 jQuery定义** - **定义**: jQuery是一个快速、简洁且高效的JavaScript框架,旨在简化HTML文档遍历、事件处理、动画以及Ajax交互等常见的Web开发任务。 -...

    从零开始学习jQuery

    ### 二、jQuery选择器 1. **ID选择器**:使用`$("#id")`选择具有特定ID的元素。 2. **类选择器**:使用`$(".class")`选择具有特定类名的元素。 3. **元素选择器**:使用`$("element")`选择所有特定类型的元素。 4. *...

    jquery学习ppt和实例

    **jQuery学习PPT和实例详解** 在Web开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。本资料包“jQuery学习ppt和实例”提供了深入学习jQuery的详细内容,...

    jquery学习笔记.rar

    《jQuery学习笔记详解》 jQuery,作为一款广泛应用于前端开发的JavaScript库,因其简洁的语法和强大的功能,深受开发者喜爱。这份"jQuery学习笔记.rar"包含的资源旨在帮助你全面掌握jQuery,无论你是初学者还是有...

    jQuery学习资料

    ### jQuery学习资料详解 #### 一、jQuery简介与基本用法 **jQuery** 是一个快速、简洁的JavaScript库,使得用户能更方便地处理HTML文档、事件、实现动画效果,并且方便地为网站提供AJAX交互。jQuery的核心功能是...

    Jquery学习资源

    **jQuery学习资源** jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画制作和Ajax交互。自2006年发布以来,jQuery已经成为了前端开发的标准工具之一,因其简洁的语法和丰富的功能而...

    锋利的jQuery(第二版)内附源码及实例+学习jQuery所需的.js文件

    《锋利的jQuery(第二版)》是一本深入解析jQuery技术的权威著作,它为读者提供了全面、系统的学习路径,帮助开发者充分利用jQuery的强大功能。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理...

Global site tag (gtag.js) - Google Analytics