JS 基础 —— JS 与 jQuery 操作DOM 对比

对于新手,学的东西多了、杂了,难免混淆,例如PHP 中数据类型数字对应有int与float,而JS 中只有number,故在此记录笔记对比JS 与jQUery操作DOM 的区别。


一、设置/获取内容

JS:

innerHTML属性

document.getElementById('test').innerHTML='<strong>新</strong>内容';//内容中可包含标签,标签将以样式显示

jQuery:

1、html():作用同JS 的innerHTML。

$('#test').html("<strong>新</strong>内容");

2、text():只能对于文本。(若有标签,标签将原样显示)

$('#test').text("<strong>新</strong>内容");//内容将设置为:<strong>新</strong>内容

3、val():只能对于表单的value。

$('#myInput').val("表单value");


html()、text()、val()拥有回调函数,回调函数形式相同,拥有两个参数:被选元素中当前元素的下标及当前元素的原来值。函数以返回形式设置新值。例:

$('#test').html(function(index,originValue){
//被选元素只有#test一个,所以index为0,当使用eq()等过滤时,index则可不为0;originValue为旧的html()返回值。
return "<strong>新</strong>内容";//设置新内容
});


附加:

若要获取html dom 的字符串,可用原生JS 的outerHTML 属性,对应 jQuery 中也可用 prop()方法获取:

JS:

var eleCode = document.getElementById("eleID").outerHTML;
jQuery :

var eleCode = $("#eleID").prop("outerHTML");
特别说明:

jQuery 获取属性有两个方法,prop()与attr()方法,前者获取的是固有属性(property:固有属性),attr()可获取自定义属性,如:

var value = $("#eleID").attr("data-my-attribute");
回顾下,JS 获取自定义属性(data-*)的方式:

var value = document.getElementById("eleID").dataset.myAttribute;
自定义属性集合保存在dataset 属性(注意大小写)中的,属性名为去掉data 与短线后以驼峰命名法命名。查看笔记: http://blog.csdn.net/qq_19865749/article/details/52494929


二、添加新节点

JS:

JS中节点的内容单独为文本节点。注意创建元素与添加元素的函数名!

1、创建元素:document.createElement()

2、创建文本节点:document.createTextNode()

3、添加文本节点与子节点:element.appendChild(childNode)

例:

var newNode=document.createElement("p");
var textNode=document.createTextNode("新段落");
newNode.appendChild(textNode);
document.getElementById("myDiv").appendChild(newNode);//将新元素节点添加到某个div里面

jQuery:

1、append():在被选元素的后面追加文本或添加节点。例:

$("p").append("包含内联元素,<i>追加的内容</i>");//对于添加字符串或内联元素,则是追加内容
$("p").append("<p>添加的新段落</p>");//对于块元素,则相当于在元素后面添加块元素

2、prepend():与append()位置相反,在前面加文本或节点。

3、还有与上面两个作用对应相同的一对:after()与before(),用于分别在被选元素前面与后面插入内容(可包含标签)。

说明:上面jQuery 的四个函数都可有多个字符串参数,用于顺序添加该参数的内容。如:

ar txt1="<p>Text.</p>";               // 以 HTML 创建新元素
var txt2=$("<p></p>").text("Text.");   // 以 jQuery 创建新元素
var txt3=document.createElement("p");  // 以 DOM 创建新元素
txt3.innerHTML="Text.";
$("p").append(txt1,txt2,txt3);         // 追加新元素


三、删除子节点

JS:

方式一:分别使用getElementById等方法找到需删除的节点与其父节点,然后使用parentElementNode.removeChild(childElementNode)删除节点。

方式二:找到需删除的元素,通过属性parentNode找到其父元素,再删除。例:

var child=document.getElementById("test");//需删除的节点
child.parentNode.removeChild(child);

jQuery:

remove():删除被选元素及其子元素。可提供一个参数对被选元素进行过滤,如:$("p").remove(".del");删除具有类del的p元素及其子元素。
empty():从被选元素中删除子元素。



附加:XML DOM 相关:

在下面的例子中,我们使用 DOM 引用从 <to> 元素中获取文本:

xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue

xmlDoc -由解析器创建的 XML 文档
getElementsByTagName("to")[0] - 第一个 <to> 元素
childNodes[0] - <to> 元素的第一个子元素(文本节点)
nodeValue - 节点的值(文本本身)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值