设置和获取HTML 文本 和 值

1.html()方法

类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容

例子

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <script src="../js/jquery-2.1.1.min.js"></script>
  6. </head>
  7. <body>
  8. <p class="demop">获取或设置HTML 文本 和 值</p>
  9. </body>
  10. <script >
  11. //获取文本内容
  12. alert($(".demop").html());
  13. //设置HTML内容
  14. $(".demop").html("<ul><li>哈哈哈哈</li></ul>");
  15. //也可以只设置单纯的文本内容
  16. $(".demop").html("烦躁");
  17. </script>
  18. </html>

2.text()方法

类似于JavaScript中的innerText属性,可以用来读取或者设置某个元素中的文本内容。

获取文本内容

  1. $(".demop").text();

设置文本内容

  1. $(".demop").text("只能设置文本内容,如果设置HTML内容,会当作文本内容显示");

3.val() 方法

此方法类似于JavaScript中的value属性,可以用来设置和获取元素的值。无论元素是文本框 下拉列表还是单选框,他都可以返回元素的值,如果元素为多选,则返回一个包含所有选择值的数组.

那么我们可以根据这个方法 做一个登陆界面 默认表单中有提示用户输入的内容,但鼠标滑过去提示内容为空

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <script src="../js/jquery-2.1.1.min.js"></script>
  6. </head>
  7. <body>
  8. <p class="demop">获取或设置HTML 文本 和 值</p>
  9. <div id="container">
  10. <div class="address">
  11. <input id="addressIP" type="text" value="请输入邮箱地址"/>
  12. <input type="radio" name="addressName" />留在首页
  13. <input type="radio" name="addressName" />进入邮箱
  14. </div>
  15. <div class="address">
  16. <input id="psw" type="text" value="请输入邮箱密码" />
  17. <button type="button">登录</button>
  18. <input type="checkbox" />记住状态
  19. </div>
  20. </div>
  21. </body>
  22. <script >
  23. $("#addressIP").mousemove(function() {
  24. //获取value
  25. if ($("#addressIP").val() == "请输入邮箱地址") {
  26. //设置value
  27. $("#addressIP").val("");
  28. }
  29. });
  30. $("#addressIP").mouseout(function(){
  31. if ($(this).val() == "") {
  32. $(this).val("请输入邮箱地址");
  33. }
  34. });
  35. $("#psw").mousemove(function() {
  36. if ($("#psw").val() == "请输入邮箱密码") {
  37. $("#psw").val("");
  38. }
  39. });
  40. $("#psw").mouseout(function(){
  41. if ($(this).val() == "") {
  42. $(this).val("请输入邮箱密码");
  43. }
  44. });
  45.  
  46. //获取文本内容
  47. // alert($(".demop").html());
  48. //设置HTML内容
  49. $(".demop").html("<ul><li>哈哈哈哈</li></ul>");
  50. //也可以只设置单纯的文本内容
  51. $(".demop").text();
  52. // alert(document.getElementsByClassName("demop")[0].value);
  53. </script>
  54. </html>

另外判断表单是否被选中 可以使用checked属性。

在该例子中也可以使用表单元素的defaultValue属性来实现同样的功能,defaultValue属性包含改表单元素的初始值。

  1. $("#psw").mousemove(function() {
  2. if ($("#psw").val() == $(this).defaultValue) {
  3. $("#psw").val("");
  4. }
  5. });

通过上面的例子我们可以看到 val()方法不仅可以设置元素的值 也可以获取元素的值。另外,val()方法还有另外一个用处,就是它能使select(下拉列表框) checkbox(多选框) 和 radio(单选框)相应的选项被选中,在表单操作中经常会被用到

例子

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <script src="../js/jquery-2.1.1.min.js"></script>
  6. </head>
  7. <body>
  8. <select id="single">
  9. <option>选择一号</option>
  10. <option>选择二号</option>
  11. <option>选择三号</option>
  12. </select>
  13. <br />
  14. <select id="multiple" multiple="multiple" style="height: 120px;">
  15. <option selected="selected">选择一号</option>
  16. <option>选择二号</option>
  17. <option>选择三号</option>
  18. <option>选择四号</option>
  19. <option selected="selected">选择五号</option>
  20. </select>
  21. <br />
  22. <input type="checkbox" value="check1" />多选1
  23. <input type="checkbox" value="check2" />多选2
  24. <input type="checkbox" value="check3" />多选3
  25. <input type="checkbox" value="check4" />多选4
  26. <br />
  27. <input type="radio" value="radio1" name="name"/>单选1
  28. <input type="radio" value="radio2" name="name"/>单选2
  29. <input type="radio" value="radio3" name="name"/>单选3
  30. </body>
  31. <script>
  32. //是下拉选择框选中第二个
  33. $("#single").val("选择二号");
  34. //如果使下拉列表中的第二项和第三项被选中
  35. $("#multiple").val(["选择二号","选择三号"]);
  36. //设置多选框的选中情况
  37. $(":checkbox").val(["check2","check3"]);
  38. $(":radio").val(["radio2"]);
  39. </script>
  40. </html>

效果图

在上面的例子中可以使用val()也可以使用attr()方法实现

  1. <script>
  2. //是下拉选择框选中第二个
  3. $("#single").val("选择二号");
  4. $("#single option:eq(1)").attr("selected",true);
  5. //如果使下拉列表中的第二项和第三项被选中
  6. // $("#multiple").val(["选择二号","选择三号"]);
  7. //也能选中 但是书写前默认选中的还是选中状态 与上面相反
  8. $("#multiple option:eq(1)").attr("selected",true);
  9. $("#multiple option:eq(2)").attr("selected",true);
  10. //设置多选框的选中情况
  11. // $(":checkbox").val(["check2","check3"]);
  12. $("[value = check2]:checkbox").attr("checked",true);
  13. // $(":radio").val(["radio2"]);
  14. $("[value = radio2]:radio").attr("checked",true);
  15. </script>

遍历节点

1. children()方法

该方法用于获取匹配元素的子元素集合

HTML 代码

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <script src="../js/jquery-2.1.1.min.js"></script>
  6. </head>
  7. <body>
  8. <p title="选择你喜欢的水果">你最喜欢的水果?</p>
  9. <ul>
  10. <li title="苹果">苹果</li>
  11. <li title="橘子">橘子</li>
  12. <li title="菠萝">菠萝</li>
  13. </ul>
  14. </body>
  15. </html>

对应的DOM树结构 如下

  1. var $ul = $("p").next();
  2. alert($ul.html());

根据DOM树结构,可以知道各个元素之间的关系以及他们子节点的个数<body>元素下有<p>和<ul>两个字元素 <p>元素没有字元素 <ul>元素有三个<li>子元素

下面使用children()方法来获取匹配元素的所有子元素的个数

  1. <script>
  2. alert($("ul").children().length);
  3. for (var i = 0; i < $("ul").children().length; i++) {
  4. //奇怪的使使用html() text()不行了 取出来的不是JQuery对象 直接是JavaScript对象 所以使用JQuery方法不行了
  5. alert($("ul").children()[i].innerHTML);
  6. }
  7. </script>

2. next()方法

该方法用于获取匹配元素后面紧邻的同辈元素。

从DOM树的结构中可以知道<p>元素下一个同辈节点<ul>,因此可以通过next()方法获取<ul>元素 代码如下

  1. var $ul = $("p").next();
  2. alert($ul.html());

3. prev()方法

该方法用于取得匹配元素前面紧邻的同辈元素。

从DOM树的结构中可以知道<ul>的上面又一个紧邻的同辈元素<p> 那么可以使用下面的代码获取p元素

  1. var $p = $("ul").prev();
  2. alert($p.text());

4. siblings()方法

该方法用于取得匹配元素前后所有的同辈元素

我们修改html代码如下

  1. <body>
  2. <p title="选择你喜欢的水果">你最喜欢的水果?</p>
  3. <p id="siblings">siblings获取前后所有的同辈元素</p>
  4. <ul>
  5. <li title="苹果">苹果</li>
  6. <li title="橘子">橘子</li>
  7. <li title="菠萝">菠萝</li>
  8. </ul>
  9. </body>

写下如下代码后

  1. //将前后的同辈元素移除
  2. $("#siblings").siblings().remove();

结果 前后的元素都被移除了

5. closest()方法

它用来取得最近的匹配元素 首先检查当前元素是否匹配,如果匹配直接返回元素本身,如果不匹配则向上查找父元素 逐级向上直到找到匹配选择器的元素,如果什么都没找到 则返回一个空的Jquery对象

例如 给点击的目标元素的最近的li元素添加颜色 ,可以使用如下代码

  1. $(document).bind("click",function(e) {
  2. $(e.target).closest("li").css("color","#FF0000");
  3. });

此外还有 nextAll() prevAll() parent()和parents() find() filter()等 根据字面意思就很好理解的 就不在赘述了


CSS-DOM 操作

CSS-DOM技术简单的来说就是读取和设置style对象的各种属性,style属性很有用,但最大的不足是无法通过它来提取通过外部CSS设置样式信息 在JQuery中 这些都非常简单

可以直接利用css()方法来获取元素样式属性 例如

  1. $("#siblings").css("transform","rotate(30deg)");

与attr()方法一样 css()方法也可以同时设置多个样式属性

  1. $("#siblings").css({"transform":"rotate(30deg)","color":"red"});

注意:

如果值是数字 将会自动转化为像素值

在css()方法中 如果属性中带有"-"符号,例如font-size 和 background-color属性 如果设置这些属性的时候不带引号,那么必须使用驼峰式写法

  1. $("#demo1").css({fontSize:"30px",backgroundColor:"red"});

建议大家都带上引号 还有提示 多方便

在JQuery中设置透明度的变化使用opacity属性,JQuery已处理好了兼容性的问题。

获取某个元素的样式

  1. alert($("#demo1").css("height"));

另外这样也可以

  1. alert($("#siblings").height());

通过height()也可以设置高度

  1. $("#siblings").height(100);

与height()对应的还有一个width()方法 可以获取对应元素的宽度值

通过height()方法可以获取window和document的高度

css()和 height方法的区别就是 css()方法获取的高度值与样式的设置有关,可能会得到auto 或者"10px"之类的字符串 而height()方法获取的高度值则是元素在页面中的实际高度,与样式的设置无关,并且不带单位

如果用height()方法设置值了 则获取相应的值


1. offset方法

它的作用是获取元素在当前视窗的相对偏移,其中返回的对象包括两个属性,即top 和 left 只对可见元素有效。

例如获取p元素的偏移量

  1. $("#siblings").offset().top;
  2. $("#siblings").offset().left;

2. position() 方法

它的作用是获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,他返回的对象也包括两个属性,即top和left

代码如下

  1. alert($("#siblings").position().left);
  2. alert($("#siblings").position().top);

3.scrollTop() 方法 和 scrollLeft()方法

这两个方法的作用分别是获取元素滚动条距顶端的距离 和 距左侧的距离 例如

  1. alert($("#siblings").scrollTop());
  2. alert($("#siblings").scrollLeft());

另外 可以位置两个方法指定一个参数,控制元素的滚动条滚动到指定的位置。例如利用如下代码控制元素内的滚动条滚动到距顶端300 左侧300的距离

  1. $("#siblings").scrollTop(300);

以上例子的完整代码

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <script src="../js/jquery-2.1.1.min.js"></script>
  6. <style>
  7. #demo1 {
  8. position: relative;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <p id="demo1" title="选择你喜欢的水果">你最喜欢的水果?</p>
  14. <p id="siblings">siblings获取前后所有的同辈元素</p>
  15. <ul>
  16. <li title="苹果">苹果</li>
  17. <li title="橘子">橘子</li>
  18. <li title="菠萝">菠萝</li>
  19. </ul>
  20. </body>
  21. <script>
  22. // alert($("#demo1").css("height"));
  23. // $("#siblings").offset().top;
  24. // $("#siblings").offset().left;
  25. alert($("#siblings").position().left);
  26. alert($("#siblings").position().top);
  27. $("#siblings").scrollTop(300);
  28.  
  29. alert($("#siblings").height());
  30. $("#demo1").css({fontSize:"30px",backgroundColor:"red"});
  31. $("#siblings").css({"transform":"rotate(30deg)","color":"red"});
  32. //将前后的同辈元素移除
  33. $("#siblings").siblings().remove();
  34. alert($("ul").children().length);
  35. for (var i = 0; i < $("ul").children().length; i++) {
  36.  
  37. alert($("ul").children()[i].innerHTML);
  38. }
  39. var $ul = $("p").next();
  40. alert($ul.html());
  41. var $p = $("ul").prev();
  42. alert($p.text());
  43. $(document).bind("click",function(e) {
  44. $(e.target).closest("li").css("color","#FF0000");
  45. });
  46. </script>
  47. </html>

实战

超链接和图片提示效果

1.超链接的提示效果

浏览器中一景自带了超链接提示,只需要在连接中加入title就可以了

  1. <a href="#" title="这是我的超链接">提示</a>

但是这种方法响应非常慢 你可以自己试一试。

我们可以自己实现这个功能 看下代码

完整代码

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title></title>
  5. <style>
  6. a {
  7. text-decoration: none;
  8. color: red;
  9. }
  10. #tooltip {
  11. background-color: darkgray;
  12. border: 1px solid orange;
  13. width: 120px;
  14. height: 25px;
  15. font-size: 12px;
  16. position: absolute;
  17. }
  18. body {
  19. position: relative;
  20. }
  21. </style>
  22. <script src="../js/jquery-2.1.1.min.js"></script>
  23. </head>
  24. <body>
  25. <p><a href="#" class="tooltip" title="这是我的超链接提示1">提示1</a></p>
  26. <p><a href="#" class="tooltip" title="这是我的超链接提示2">提示1</a></p>
  27. <p><a href="#" title="这是自带提示1">这是自带提示1</a></p>
  28. <p><a href="#" title="这是自带提示2">这是自带提示2</a></p>
  29.  
  30. <script>
  31. var x = 10;
  32. var y = 20;
  33. $("a.tooltip").mouseover(function(e) {
  34. //显示title
  35. //创建一个div
  36. this.myTitle = this.title;
  37. this.title = "";
  38. var tooltip = "<div id = 'tooltip'>" + this.myTitle + "</div>";
  39. $("body").append(tooltip);
  40. $("#tooltip").css({"top":(e.pageY + y) + "px",
  41. "left":(e.pageX +x) + "px"
  42. }).show("fast");
  43.  
  44. }).mouseout(function(e) {
  45. this.title = this.myTitle;
  46. //隐藏title
  47. $("#tooltip").remove();
  48. });
  49. </script>
  50. </body>
  51. </html>

HTML 学习笔记 JQuery(DOM 操作3)的更多相关文章

  1. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  2. jQuery学习笔记(DOM操作)

    DOM操作的分类 一般来说,DOM操作分为3个方面,即DOM Core.HTML-DOM和CSS-DOM. 1. DOM Core DOM Core并不专属于JavaScript,任何一种支持DOM的 ...

  3. jQuery DOM操作之结点转移复制

    jQuery DOM操作之结点转移复制 $('div').append($('p'))这样即可把p标签移动到div标签里 $('div').append( $('p').html() )是把p标签里的 ...

  4. IOS学习笔记25—HTTP操作之ASIHTTPRequest

    IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...

  5. java学习笔记07--日期操作类

    java学习笔记07--日期操作类   一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...

  6. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  7. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  8. JQuery DOM操作(属性操作/样式操作/文档过滤)

    jQuery——入门(三)JQuery DOM操作(属性操作/样式操作/文档过滤) 一.DOM属性操作 1.属性 (1).attr() 方法 语法:$(selector).attr(name|prop ...

  9. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  10. JavaWeb学习笔记——jquery中的dom操作

     jquery中的dom操作 废话不说:直接上例子: 1.添加节点-html页面 Append:向每个匹配的元素内部追加内容. <body> <ul id="city& ...

随机推荐

  1. RAID 1-6

    RAID 0 RAID 0亦称为带区集.它将两个以上的磁盘串联起来,成为一个大容量的磁盘.在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最 ...

  2. ADO.NET:连接数据字符串

    ylbtech-ADO.NET:ADO.NET-Oracle|SQLServer|MySql|Access|Excel-dddd ADO.NET:连接数据字符串 1.A,SqlServer返回顶部 1 ...

  3. Qt编程简介与基本知识

    1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...

  4. django如何用邮箱代替用户名登录

    有两种方法 方法一,修改username字段,让他跟email字段一模一样,然后把email放到username,email字段里面,username放到firstname或者lastname里面,这 ...

  5. oracle12安装软件后安装数据库,然后需要自己配置监听

    oracle12安装软件后安装数据库,然后需要自己配置监听 没想到你是这样的oracle12: 不能同时安装软件和数据库,分别安装之后,\NETWORD\ADMIN\下面竟然没有listener.or ...

  6. 【VBS】发邮件

    Sub SendMail(pMailFrom, pMailTo, pSubject, pMailBody, pMailSmtpServer) On Error Resume Next Dim objS ...

  7. Flume 开发人员指南V1.5.2

    介绍 概述 Apache Flume是一个用来从非常多不同的源有效地收集.聚集和移动大量的日志数据到一个中心数据仓库的分布式的,可靠的和可用的系统. Apache Flume是Apache软件基金会的 ...

  8. VueJS循环语句:v-for

    v-for 指令需要以 item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名. HTML <!DOCTYPE html> <ht ...

  9. [Java开发之路](23)装箱与拆箱

    1. 简单介绍 大家对基本数据类型都很熟悉.比如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性,比方基本类型不能调用方法.功能简单. ..,为了让基本 ...

  10. Windows下ADB使用相关问题

    Windows下ADB使用相关问题 适用环境: 在Windows XP.WIN7下均可按本文操作进行.WIN8下没有进行实验.但操作设置大致同样.除了第4步.adb_usb.ini的位置可能有所不同以 ...