jQuery常用API

jQuery常用DOM操作

.append()

添加元素,通过$符号,生成一个dom元素并将它添加到页面,也可以添加jQuery对象,字符串等

1
2
3
4
5
6
7
8
9
10
<body>
<p>你好!</p>

<script>
$('p').append('小明和小红。');
</script>
</body>

/*执行结果*/
/*<p>你好!小明和小红。</p>*/

.prepend()

在元素的前头添加字符串或元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
<ul>
<li>太郎</li>
<li>花子</li>
<li>三郎</li>
</ul>

$('li').prepend('<strong>ユーザー名:</strong>');
/* 执行结果*/
/* <ul>
<li><strong>ユーザー名:</strong>太郎</li>
<li><strong>ユーザー名:</strong>花子</li>
<li><strong>ユーザー名:</strong>三郎</li>
</ul>*/

.before()

在对象前面(不是内部而是外面,和对象同级)插入内容,参数和append相似。

1
2
3
4
5
6
7
8
9
10
11
<p> is what I said...</p>
<p> is what you said too...</p>

$("p").before("<b>Hello</b>");
/* 执行结果 */
/*
<b>Hello</b>
<p> is what I said...</p>
<b>Hello</b>
<p> is what you said too...</p>
*/

.after()

在对象后面(不是内部而是外面,和对象同级)插入内容,参数和append相似。

1
2
3
4
5
6
7
8
9
10
11
<p> is what I said...</p>
<p> is what you said too...</p>

$("p").before("<b>Hello</b>");
/* 执行结果 */
/*
<p> is what I said...</p>
<b>Hello</b>
<p> is what you said too...</p>
<b>Hello</b>
*/

.remove()

删除所选对象的元素或者子元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
<div>
<p>sample1</p>
<p class="two">sample2</p>
</div>

<script>
$('.two').remove();
</script>
</body>

/* 执行结果*/
/*
<div>
<p>sample1</p>
</div>
*/

.empty()

删除指定元素内的所有子元素。该元素保留

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div id="parent">
<p class="child">子元素</p>
</div>
<button id="button">删除子元素</button>

$("#button").on("click", function(){
$("#parent").empty();
});

/* 执行结果*/
/*
<div id="parent">
</div>
<button id="button">删除子元素</button>
*/

.html()

实用html()能够任意的获取HTML元素,并进行添加或替换处理。
获取:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
<p>你好</p>
<a href="#">sample</a>

<script>
const result1 = $('p').html();
const result2 = $('a').html();

console.log( result1 );
console.log( result2 );
</script>
</body>
/* 执行结果*/
/*
你好
sample
*/

替换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<div>
<h1>title</h1>
<p>sample text</p>
<a href="#">link</a>
</div>

<script>
$('div').html('<p>Hello</p>');
</script>
</body>

/* 执行结果*/
/*
<div>
<p>こんにちは</p>
</div>
*/

添加:

1
2
3
4
5
6
7
8
9
10
11
<body>
<p>here is the link</p>

<script>
$('p').html('<p>link is<a href="#">this one</a>!!</p>');
</script>
</body>
/* 执行结果*/
/*
<p>link is<a href="#">this one</a>!!</p>
*/

.text()

text()和html()十分相似,$node.text()和$node.html()的区别是text取得所有符合条件的元素进行处理,添加时只能添加字符串。
text()和html()的获取元素对比:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<p>Good Morning</p>
<p>Hello</p>

<script>
const result1 = $('p').html();
const result2 = $('p').text();

console.log( result1 );
console.log( result2 );
</script>
</body>

/* 执行结果*/
/*
Good Morning
Good MorningHello
*/

text()插入字符串

1
2
3
4
5
6
7
8
9
10
11
12
<body>
<div>
<p>Good Morning</p>
</div>

<script>
$('div').text('<h1>Title</h1>');
</script>
</body>

/* 执行结果*/
/* 「<h1>Title</h1>」被当作字符串插入*/

jQuery属性&CSS操作

属性相关

.val()

val()用于取得HTML元素的value,并可以对其进行修改和设定

1
2
3
4
5
6
7
8
9
10
<button id="btn-a" value="a">Button A</button>


$('#btn-a').val('value-a');


/* 执行结果*/
/*
<button id="btn-a" value="value-a">ボタンA</button>
*/

.attr()

attr()用于获取HTML元素的属性,并对其进行修改和设定
获取元素的属性并修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<body>
<p id="sample">Hello</p>

<script>
const result = $('p').attr('id', 'text');

console.log( result[0] );
</script>
</body>

/* 执行结果*/
/*
<p id="text">Hello</p>
*/

添加元素的属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<body>
<input>

<script>
const result = $('input').attr({
id: 'text',
class: 'form',
type: 'checkbox',
value: 'one',
checked: true
});

console.log( result[0] );
</script>
</body>

/* 执行结果*/
/*
<input id="text" class="form" type="checkbox" value="one" checked="checked">
*/

.removeAttr()

.removeAttr()用于删除对象元素的属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<body>
<p class="text">Hello</p>

<script>
const result = $('p').removeAttr('class');

console.log( result[0] );
</script>
</body>


/* 执行结果*/
/*
<p>Hello</p>
*/

.prop()

prop()和removeAttr()十分相似,不同在于prop能够确认属性是否存在的状态。
当某个属性比如checked / disabled不存在时,和removeAttr()返回undefined,而prop返回false.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<body>
<button class="btn1">Button1</button>
<button class="btn2" disabled>Button1</button>

<script>
const result1 = $('.btn1').attr('disabled');
const result2 = $('.btn2').attr('disabled');

const result3 = $('.btn1').prop('disabled');
const result4 = $('.btn2').prop('disabled');


console.log( result1 );
console.log( result2 );
console.log( result3 );
console.log( result4 );
</script>
</body>

/* 执行结果*/
/*
undefined
disabled

false
true
*/

.css()

.css()能够进行元素css的设定,添加,获取,修改等。
元素css的设定

1
2
3
4
5
6
7
8
9
10
11
<body>
<p>sample text</p>

<script>
</script>
$('p').css('color', '#f00');
</body>

/* 执行结果
将p内的文字颜色变红(#f00)
*/

修改元素的css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<body>
<p style="font-size:12px">sample1</p>
<p style="font-size:16px">sample2</p>
<p style="font-size:20px">sample3</p>

<script>
$('p').css('font-size', function(index, value) {
var newValue = parseInt(value) + 6;

return newValue + 'px';
})
</script>
</body>

/* 执行结果 */
/*

<p style="font-size:18px">sample1</p>
<p style="font-size:22px">sample2</p>
<p style="font-size:26px">sample3</p>
*/

.addClass()

用于给任何一个元素添加css

如果p元素没有任何的样式,则添加addRed样式。index为该对象HTML元素的下标,myclass为该元素最初自身拥有的class属性名

1
2
3
4
5
6
7
8
9
10
11
<p class="addBlue">Good Morning</p>
<p class="addGreen">Hello</p>
<p>こんばんは</p>

$('p').addClass(function( index, myclass ) {

if( !myclass ) {
return 'addRed';
}

})

removeClass()

removeClass()用于给任何元素删除css,有重复的情况下,删除所有匹配元素的css。
复数指定时用空格隔开,不传参则对象元素全部删除css。

1
2
3
4
5
6
7
8
9
<ul>
<li class="test">list1</li>
<li class="sample">list2</li>
<li class="text">list3</li>
</ul>

$('li').removeClass('test sample');

/* css为text和sample的list2,list3的css被删除 */

.hasClass()

hasClass()用于查看对象元素是否存在某样式css。存在返回true,不存在返回false。
复数的情况下用空格隔开,并且要求搜索参数值与css值完全一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul>
<li class="red">リスト1</li>
<li class="blue">リスト2</li>
<li class="red green">リスト3</li>
</ul>


var li = $('li').hasClass('red green');

console.log(li);

/* 执行结果 */

/* true */

.toggleClass()

toggleClass()可以操作对象的class属性,并进行添加,删除等循环操作。

利用toggleClass()进行mytoggle的显示/隐藏的切换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.mytoggle {
display: none;
}

<body>
<h1>Title</h1>
<button>Button</button>

<script>
$('button').click(function() {
$('h1').toggleClass('mytoggle');
})
</script>
</body>

.each()

.each()用于循环历遍每个元素。相当于forEach。

对HTML元素的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<ul>
<li>sample1</li>
<li>sample2</li>
<li>sample3</li>
</ul>

$('li').each(function(index, element) {

console.log(index);
console.log($(element).text());

})

/* 执行结果*/

sample1
1
sample2
2
sample3

对数列的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var array = [3,6,2,8,6];

$.each(array, function(index, value) {

console.log(index + ': ' + value);

})

/* 执行结果*/
0: 3
1: 6
2: 2
3: 8
4: 6

$.extend()

$.extend()用与连结两个或多个对象,将其整合为一个对象。
无指定则在第一个传递的对象上进行覆盖,如果想保留原对象,则第一参数传空{}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var user1 = {
name: '太郎',
area: 'tokyo'
}

var user2 = {
name: '花子',
age: 28
}

var result = $.extend({}, user1, user2);

console.log(result);
console.log('------------');
console.log(user1);

/* 执行结果 */
Object { name: "花子", area: "tokyo", age: 28 }
------------
Object { name: "太郎", area: "tokyo" }

.clone()

.clone()用于复制对象和元素。参数要指定true,false时或不传参数时不能复制。

按键时按钮被复制:

1
2
3
4
5
6
7
<button name="clone">Clone!</button>

<script>
$('button[name=clone]').on('click', function () {
$(this).clone(true).insertAfter(this);
});
</script>

.index()

.index()用于取得元素的下标

点击按钮时获取下标:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<ul>
<li>北海道</li>
<li>東北</li>
<li>関東</li>
<li>東海</li>
<li>関西</li>
<li>中国</li>
<li>四国</li>
<li>九州</li>
</ul>

<p><span id="num"></span>几个</p>


$(function() {

$('li').click(function() {

var i = $('li').index(this);

$('#num').text(i);

});
});

.ready()

.ready()可以忽略浏览器默认加载,在DOM准备好后就立即执行这个函数。

下面的函数执行时,由于对h1的操作在body的h1生成之前,所以相当于无效。

1
2
3
4
5
6
7
8
9
10
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$('h1').text('Hello World');
</script>
</head>

<body>
<h1>こんにちは</h1>
</body>

此时使用.ready(),则可以在h1加载完成时再立马执行处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {

$('h1').text('Hello World');

})
</script>
</head>

<body>
<h1>こんにちは</h1>
</body>

还可以简写成下面的形式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function() {

//your coding

});

or

$(showLog);

function showLog() {

console.log('Hey! Let's see log);

}