Query-操作DOM

而且有的浏览器只有innerHTML,有的浏览器支持innerText,有了jQuery对象,不需要考虑浏览器差异了,全部统一操作

一. 修改Text和HTML
text()获取节点的文本,有参数时修改
html()原始HTML文本,有参数时修改

<!-- HTML结构 -->
<ul id="test-ul">
    <li class="js">JavaScript</li>
    <li name="book">Java &amp; JavaScript</li>
</ul>
获取:

$('#test-ul li[name=book]').text();     // 'Java & JavaScript'
$('#test-ul li[name=book]').html();     // 'Java &amp; JavaScript'

修改:
var j1 = $('#test-ul li.js');
var j2 = $('#test-ul li[name=book]');

j1.html('<span style="color: red">JavaScript</span>');
j2.text('JavaScript & Script');

不会报错:

// 如果不存在id为not-exist的节点:
$('#not-exist').text('Hello'); // 代码不报错,没有节点被设置为'Hello'
这意味着jQuery帮你免去了许多if语句。
二.修改CSS
  1. 修改CSS属性
jQuery对象的css()方法可以这么用:

var div = $('#test-div');

div.css('color'); // '#000033', 获取CSS属性

div.css('color', '#336699'); // 设置CSS属性

div.css('color', ''); // 清除CSS属性
为了和JavaScript保持一致,CSS属性可以用'background-color'和'backgroundColor'两种格式。

$('#test-css).css('background-color', '#ffd351').css('color', 'red');
//同时设置背景颜色以及字体颜色两种css样式

css()修改的属性具有最高优先级。
  1. 修改class属性
修改class属性,可以用jQuery提供的下列方法:

var div = $('#test-div');

div.hasClass('highlight'); // false, class是否包含highlight

div.addClass('highlight'); // 添加highlight这个class

div.removeClass('highlight'); // 删除highlight这个class
三.获取DOM信息
  1. width() 与 height() :
// 浏览器可视窗口大小:
$(window).width(); // 800
$(window).height(); // 600

// HTML文档大小:
$(document).width(); // 800
$(document).height(); // 3500

// 某个div的大小:
var div = $('#test-div');
div.width(); // 600
div.height(); // 300
div.width(400); // 设置CSS属性 width: 400px,是否生效要看CSS是否有效
div.height('200px'); // 设置CSS属性 height: 200px,是否生效要看CSS是否有效
  1. attr()和removeAttr():
attr():获取或修改属性值
removeAttr():删除属性值

// <div id="test-div" name="Test" start="1">...</div>
var div = $('#test-div');
div.attr('data'); // undefined, 属性不存在

div.attr('name'); // 'Test'

div.attr('name', 'Hello'); // div的name属性变为'Hello'

div.removeAttr('name'); // 删除name属性
  1. 判断checked值
    prop()方法、attr()和is():
<input id="test-radio" type="radio" name="test" checked="checked" value="1">

var radio = $('#test-radio');

radio.attr('checked'); // 'checked'

radio.prop('checked'); // true

radio.is(':checked'); // true
类似的属性还有selected,处理时最好用is(':selected')。
  1. 显示和隐藏DOM
var a = $('a[target=_blank]');
a.hide(); // 隐藏
a.show(); // 显示

注意,隐藏DOM节点并未改变DOM树的结构,它只影响DOM节点的显示。这和删除DOM节点是不同的。
四、操作表单

对于表单元素,jQuery对象统一提供val()方法获取和设置对应的value属性:

/*
    <input id="test-input" name="email" value="">
    <select id="test-select" name="city">
        <option value="BJ" selected>Beijing</option>
        <option value="SH">Shanghai</option>
        <option value="SZ">Shenzhen</option>
    </select>
    <textarea id="test-textarea">Hello</textarea>
*/
var
    input = $('#test-input'),
    select = $('#test-select'),
    textarea = $('#test-textarea');

input.val(); // 'test'
input.val('abc@example.com'); // 文本框的内容已变为abc@example.com

select.val(); // 'BJ'
select.val('SH'); // 选择框已变为Shanghai

textarea.val(); // 'Hello'
textarea.val('Hi'); // 文本区域已更新为'Hi'

一个val()就统一了各种输入框的取值和赋值的问题。
四、修改DOM结构

添加:

parent.append()把DOM添加到最后,
parent.prepend()则把DOM添加到最前。
同级节点可以用after()或者before()方法。

用append(),要添加的DOM节点已经存在于HTML文档中,它会首先从文档移除,然后再添加,可以移动一个DOM节点

ul.append('<li><span>Haskell</span></li>');

除了接受字符串,append()还可以传入原始的DOM对象,jQuery对象和函数对象:

// 添加DOM对象:
var ps = document.createElement('li');
ps.innerHTML = '<span>Pascal</span>';
ul.append(ps);

// 添加jQuery对象:
ul.append($('#scheme'));

// 添加函数对象:
ul.append(function (index, html) {
    return '<li><span>Language - ' + index + '</span></li>';
});
传入函数时,要求返回一个字符串、DOM对象或者jQuery对象。因为jQuery的append()可能作用于一组DOM节点,只有传入函数才能针对每个DOM生成不同的子节点。
  1. 删除节点
remove()

如果jQuery对象包含若干DOM节点,可以一次删除多个DOM节点:

var li = $('#test-div>ul>li');
li.remove(); // 所有<li>全被删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值