Javascript和Jquery語法對比總結


目的

相信大家都知道jq是js的一個類庫,是為了方便我們開發前端,但是筆者在剛開始學習js和jq時經常將兩者的語法記混和混用,所以整理下兩者實現相同功能之前的語法區別。

聲明變量

javascript聲明變量

語法 var + 變量名 =值;或者 let + 標量名=值;ES6新增了let命令,用於聲明變量。其用法類似於var(全局變量),但是所聲明的變量只在let命令所在的代碼塊內有效。例如:for循環的計數器就很適合使用let命令。

var  name = Kingfan; //var 表示全局變量

var list = [1,2,3,4]   //聲明一個數組

for(let i=0;i<list.lenght;i++) // i只在for循環的時候在用到,所以沒必要聲明一個全局變量,所以用let聲明
{
    console.log(list[i])
}

Jquery聲明變量

jq並沒有對聲明變量進行封裝,與js聲明標量的方法完全一致。

查找標簽

查找標簽的本質就是選擇器和篩選器,在jq中對原生js的語法進行了很多優化和簡寫,所有有明顯的不同但也相似,所以小心記混!!!,另外js對象只能用js的語法和方法,同理jq對象也是!。

js查找標簽

document.getElementById                               //根據ID獲取一個標簽
document.getElementsByClassName              //根據class屬性獲取
document.getElementsByTagName                 //根據標簽名獲取標簽合集
//上面得到一個對象或者多個對象的集合
//根據js對象可以調用下面方法進行間接查找
對象.parentElement                                           // 父節點標簽元素
對象.children                                                      //所有子標簽
對象.firstElementChild                                       //第一個子標簽元素
對象.lastElementChild                                       //最后一個子標簽元素
對象.nextElementSibling                                   //下一個兄弟標簽元素
對象.previousElementSibling                            //上一個兄弟標簽元素

Jquery查找標簽(獲得jq對象)

$("#id")                                                    //根據id查找
$("tagName")                                          //根據標簽查找
$(".className")                                     //根據類名查找
$("div.c1")                                              // 找到有c1 class類的div標簽
$("#id, .className, tagName")               //組合查找
$("x y");                                                    // x的所有后代y(子子孫孫)
$("x > y");                                                 // x的所有兒子y(兒子)
$("x + y")                                                  // 找到所有緊挨在x后面的y
$("x ~ y")                                                  // x之后所有的兄弟y

//基本篩選器
:first // 第一個
:last // 最后一個
:eq(index)// 索引等於index的那個元素
:even // 匹配所有索引值為偶數的元素,從 0 開始計數
:odd // 匹配所有索引值為奇數的元素,從 0 開始計數
:gt(index)// 匹配所有大於給定索引值的元素
:lt(index)// 匹配所有小於給定索引值的元素
:not(元素選擇器)// 移除所有滿足not條件的標簽
:has(元素選擇器)// 選取所有包含一個或多個標簽在其內的標簽(指的是從后代元素找)
//例子
$("div:has(h1)")// 找到所有后代中有h1標簽的div標簽
$("div:has(.c1)")// 找到所有后代中有c1樣式類的div標簽
$("li:not(.c1)")// 找到所有不包含c1樣式類的li標簽
$("li:not(:has(a))")// 找到所有后代中不含a標簽的li標簽
//屬性選擇器
[attribute]
[attribute=value]// 屬性等於
[attribute!=value]// 屬性不等於
// 示例
<input type="text">
<input type="password">
<input type="checkbox">
$("input[type='checkbox']");// 取到checkbox類型的input標簽
$("input[type!='text']");// 取到類型不是text的input標簽

//表單篩選器:
:text
:password
:file
:radio
:checkbox

:submit
:reset
:button
//例子:

$(":checkbox")  // 找到所有的checkbox
例子:

找到可用的input標簽

<form>
  <input name="email" disabled="disabled" />
  <input name="id" />
</form>

$("input:enabled")  // 找到可用的input標簽
 找到被選中的option:

<select id="s1">
  <option value="beijing">北京市</option>
  <option value="shanghai">上海市</option>
  <option selected value="guangzhou">廣州市</option>
  <option value="shenzhen">深圳市</option>
</select>

$(":selected")  // 找到所有被選中的option

jq篩選器

下一個元素:

$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2")
上一個元素:

$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")
父親元素:

$("#id").parent()
$("#id").parents()  // 查找當前元素的所有的父輩元素
$("#id").parentsUntil() // 查找當前元素的所有的父輩元素,直到遇到匹配的那個元素為止。
兒子和兄弟元素:

$("#id").children();// 兒子們
$("#id").siblings();// 兄弟們
查找

搜索所有與指定表達式匹配的元素。這個函數是找出正在處理的元素的后代元素的好方法。

$("div").find("p")
等價於$("div p")

篩選

篩選出與指定表達式匹配的元素集合。這個方法用於縮小匹配的范圍。用逗號分隔多個表達式。

$("div").filter(".c1")  // 從結果集中過濾出有c1樣式類的
等價於 $("div.c1")

補充:

.first() // 獲取匹配的第一個元素
.last() // 獲取匹配的最后一個元素
.not() // 從匹配元素的集合中刪除與指定表達式匹配的元素
.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
.eq() // 索引值等於指定值的元素

標簽操作

jq

//樣式類

addClass();// 添加指定的CSS類名。
removeClass();// 移除指定的CSS類名。
hasClass();// 判斷樣式存不存在
toggleClass();// 切換CSS類名,如果有就移除,如果沒有就添加。
//示例:開關燈和模態框

//CSS

css("color","red")//DOM操作:tag.style.color="red"
//示例:

$("p").css("color", "red"); //將所有p標簽的字體設置為紅色

js

class的操作
className  獲取所有樣式類名(字符串)

classList.remove(cls)  刪除指定類
classList.add(cls)  添加類
classList.contains(cls)  存在返回true,否則返回false
classList.toggle(cls)  存在就刪除,否則添加
指定CSS操作
obj.style.backgroundColor="red"
JS操作CSS屬性的規律:

1.對於沒有中橫線的CSS屬性一般直接使用style.屬性名即可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position
2.對含有中橫線的CSS屬性,將中橫線后面的第一個字母換成大寫即可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM