【2020Python修煉記】前端開發之 jQuery 屬性/樣式操作

来源:https://www.cnblogs.com/bigorangecc/archive/2020/05/20/12921951.html
-Advertisement-
Play Games

【目錄】 一、jQuery操作標簽 二、jQuery綁定事件 一、jQuery操作標簽 1、操作類 js版本 jQuery版本classList.add() addClass()classList.remove() removeClass()classList.contains() hasClass ...


【目錄】

一、jQuery操作標簽

二、jQuery綁定事件

 

一、jQuery操作標簽 

 1、操作類 class 

js版本                               jQuery版本
classList.add()                 addClass()
classList.remove()           removeClass()
classList.contains()         hasClass()
classList.toggle()             toggleClass()

addClass(class|fn)             為每個匹配的元素添加指定的類名
removeClass([class|fn])        從所有匹配的元素中刪除全部或者指定的類
toggleClass(class|fn[,sw])     如果存在(不存在)就刪除(添加)一個類
hasClass(class)                檢查當前的元素是否含有某個特定的類,如果有,則返回true

2、CSS操作

<p>111</p>

<p>222</p>

<p>333</p>

"""一行代碼將第一個p標簽變成紅色,第二個p標簽變成綠色 第三個p標簽變成藍色

"""
$('p').first().css('color','red').next().css('color','green').next().css('color','blue')


# jQuery的鏈式操作 使用jQuery可以做到一行代碼操作很多標簽
# jQuery對象調用jQuery方法之後返回的還是當前jQuery對象 也就可以繼續調用其他方法

# python 中 連續調用函數 — return self

class MyClass(object):
  def func1(self):
  print('func1')
  return self

def func2(self):
  print('func2')
  return self
obj
= MyClass() obj.func1().func2()

3、位置操作

offset()   # 相對於瀏覽器視窗
position()   # 相對於父標簽

scrollTop()  # (需要瞭解) 返回頂部 (針對 側欄滾動條)

$(window).scrollTop()  # 括弧內不加參數就是獲取
1733
$(window).scrollTop(500)   # 加了參數就是設置
n.fn.init [Window]


scrollLeft()  # 向左滑動(針對 水平滾動條)

# 方法類似 scrollTop() 

4、尺寸設置

$('p').height()   # 文本
$('p').width()

$('p').innerHeight()   # 文本+padding
$('p').innerWidth()

$('p').outerHeight()    # 文本+padding+border
$('p').outerWidth()

5、文本操作

# 操作標簽內部文本
js             jQuery
innerText         text() 括弧內不加參數就是獲取加了就是設置
innerHTML             html()

# 獲取標簽文本:

$('div').text()   # 僅獲取 div里的文本內容

"有些話聽聽就過去了,不要在意,都是成年人!"

$('div').html()  #獲取  div里的 html 代碼
"<p>有些話聽聽就過去了,不要在意,都是成年人!</p>"

# 修改標簽文本 (括弧內 加值,就是賦值修改)

$('div').text('借問酒家何處有')

$('div').html('借問酒家何處有')

#  .text 不能識別 html 代碼,即 不能顯示其效果。.html 則可以。

$('div').text('<h1>你們都是我的大寶貝</h1>')

$('div').html('<h1>你個臭妹妹</h1>')

6、獲取值操作

js         jQuery
.value       .val()

# 獲取文本數據
$('#d1').val()   
"sasdasdsadsadad"
$('#d1').val('520快樂')  # 括弧內不加參數就是獲取,加了就是設置

# 獲取文件數據
$('#d2').val()
"C:\fakepath\01_測試路由.png"
$('#d2')[0].files[0]     # 牢記 js對象 和 jQuery 對象 之間的轉換 
File {name: "01_測試路由.png", lastModified: 1557043083000, lastModifiedDate: Sun May 05 2019 15:58:03 GMT+0800 (中國標準時間), webkitRelativePath: "", size: 28733, …}

 

【溫故而知新】 js對象 和 jQuery 對象 之間的轉換 

// jQuery對象 如何變成 標簽對象 
$('#d1')[0]
<div id=​"d1">​…​</div>​
document.getElementById('d1')  # 查看是否變為 標簽對象(調用 標簽對象)
<div id=​"d1">​…​</div>// 標簽對象 如何變成 jQuery對象
$(document.getElementById('d1'))
w.fn.init [div#d1]

7、屬性操作

js                      jQuery
setAttribute()        attr(name,value)
getAttribute()        attr(name)
removeAttribute()      removeAttr(name)

在用變數存儲對象的時候,命名規則——

js中推薦使用
  XXXEle  標簽對象
jQuery中推薦使用
  $XXXEle  jQuery對象

# 舉例:

# 獲取值
let $pEle = $('p') #定義 jQuery 對象

$pEle.attr('id')
"d1"
$pEle.attr('class')
undefined

#修改 / 賦值

$pEle.attr('class','c1')
w.fn.init [p#d1.c1, prevObject: w.fn.init(1)]
$pEle.attr('id','id666')
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
$pEle.attr('password','jason123')
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]

#刪除

$pEle.removeAttr('password')
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)] 

"""
對於標簽上有的能夠看到的屬性和自定義屬性,用attr
對於返回布爾值,比如 checkbox radio option是否被選中,用prop
"""

$('#d3').attr('checked')
"checked"
$('#d2').attr('checked')
undefined
$('#d4').attr('checked')
undefined
$('#d3').attr('checked','checked') # 無效
w.fn.init [input#d3]


$('#d2').prop('checked')
false
$('#d2').prop('checked')
true
$('#d3').prop('checked',true)   # 使其被選中
w.fn.init [input#d3]
$('#d3').prop('checked',false) 
w.fn.init [input#d3]

8、文檔處理

js            jQuery
createElement('p')    $('<p>')
appendChild()               append()


let $pEle = $('<p>')   # 創建一個 p 標簽 jQuery 對象

$pEle.text ('你好啊 草莓要不要來幾個?')  # 加入文本信息
$pEle.attr('id','d1')    # 添加id 信息

$('#d1').append($pEle)  # 在id 為 d1 的標簽內部尾部追加
$pEle.appendTo($('#d1'))

$('#d1').prepend($pEle) # 內部頭部追加
w.fn.init [div#d1]
$pEle.prependTo($('#d1'))
w.fn.init [p#d1, prevObject: w.fn.init(1)]

$('#d2').after($pEle)   # 放在某個標簽 (此處為 id 為d2的標簽)後面
w.fn.init [p#d2]
$pEle.insertAfter($('#d1'))


$('#d1').before($pEle)
w.fn.init [div#d1]
$pEle.insertBefore($('#d2'))

$('#d1').remove()  # 將標簽從DOM樹中刪除
w.fn.init [div#d1]
$('#d1').empty()  # 清空標簽內部所有的內容
w.fn.init [div#d1]

 

參考閱讀:https://www.cnblogs.com/xiaoyuanqujing/articles/11670119.html

https://www.cnblogs.com/xiaoyuanqujing/articles/11670128.html

 

二、jQuery綁定事件 以及 事件應用舉例

1、綁定事件的兩種方法

// 第一種
    $('#d1').click(function () {
            alert('你好呀')
    });
  
// 第二種(功能更加強大 還支持事件委托)
    $('#d2').on('click',function () {
            alert('好嗨喲')
    })

2、克隆事件

<button id="d1">護膚套裝,點擊就送</button>

<script>
    $('#d1').on('click',function () {
        // console.log(this)  // this指代是當前被操作的標簽對象
        // $(this).clone().insertAfter($('body'))  // clone預設情況下只克隆html和css,不克隆事件
        $(this).clone(true).insertAfter($('body'))  // 括弧內加true,即可克隆事件

    })
</script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <style>
        #d1 {
            height: 100px;
            width: 100px;
            background-color: orange;
            border: 1px solid blue;
        }
    </style>
</head>
<body>
<button id="d1">屠龍寶刀,點擊就送</button>

<script>
    $('#d1').on('click',function () {
        // console.log(this)  // this指代是當前被操作的標簽對象
        // $(this).clone().insertAfter($('body'))  // clone預設情況下只克隆html和css 不克隆事件
        $(this).clone(true).insertAfter($('body'))  // 括弧內加true即可克隆事件

    })
</script>
</body>
</html>
應用慄子

 

3、自定義模態框

模態框內部本質就是給標簽移除或者添加上 hide屬性

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>自定義模態框</title>
  <style>
    .cover {
      position: fixed;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      background-color: darkgrey;
      z-index: 999;
    }
    .modal {
      width: 600px;
      height: 400px;
      background-color: white;
      position: fixed;
      left: 50%;
      top: 50%;
      margin-left: -300px;
      margin-top: -200px;
      z-index: 1000;
    }
    .hide {
      display: none;
    }
  </style>
</head>
<body>
<input type="button" value="彈" id="i0">

<div class="cover hide"></div>
<div class="modal hide">
  <label for="i1">姓名</label>
  <input id="i1" type="text">
   <label for="i2">愛好</label>
  <input id="i2" type="text">
  <input type="button" id="i3" value="關閉">
</div>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
  // var tButton = $("#i0")[0];
  $("#i0").click(function () {
    var coverEle = $(".cover")[0];  // 需要手動轉
    var modalEle = $(".modal")[0];

    $(coverEle).removeClass("hide");
    $(modalEle).removeClass("hide");
  })
  // tButton.onclick=function () {
  //   var coverEle = $(".cover")[0];
  //   var modalEle = $(".modal")[0];
  //
  //   $(coverEle).removeClass("hide");
  //   $(modalEle).removeClass("hide");
  // };

  var cButton = $("#i3")[0];
  cButton.onclick=function () {
    var coverEle = $(".cover")[0];
    var modalEle = $(".modal")[0];

    $(coverEle).addClass("hide");
    $(modalEle).addClass("hide");
  }
</script>
</body>
</html>
詳細代碼

 

4、左側菜單(有顯隱效果)

<script>
    $('.title').click(function () {
        // 先給所有的items加hide
        $('.items').addClass('hide')
        // 然後將被點擊標簽內部的hide移除
        $(this).children().removeClass('hide')
    })
</script>
<!--嘗試用一行代碼搞定上面的操作-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <style>
        .left {
            float: left;
            background-color: darkgray;
            width: 20%;
            height: 100%;
            position: fixed;
        }
        .title {
            font-size: 36px;
            color: white;
            text-align: center;
        }
        .items {
            border: 1px solid black;
        }
        .hide {
            display: none;
        }
    </style>
</head>
<body>
<div class="left">
    <div class="menu">
        <div class="title">菜單一
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
        <div class="title">菜單二
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
        <div class="title">菜單三
            <div class="items">111</div>
            <div class="items">222</div>
            <div class="items">333</div>
        </div>
    </div>
</div>

<script>
    $('.title').click(function () {
        // 先給所有的items加hide
        $('.items').addClass('hide')
        // 然後將被點擊標簽內部的hide移除
        $(this).children().removeClass('hide')
    })
</script>
</body>
</html>
View Code

 

5、返回頂部

<script>
    $(window).scroll(function () {
        if($(window).scrollTop() > 300){
            $('#d1').removeClass('hide')
        }else{
            $('#d1').addClass('hide')
        }
    })
</script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <style>
        .hide 
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • A.前言:為瞭解決安卓端向伺服器上傳照片的問題 1.獲得相冊許可權,選取照片,取到照片的url 2.使用okhttp訪問伺服器並向伺服器傳照片 3.配置springmvc文件解析器 4.搭建伺服器,獲取數據保存照片 B.Android添加一個按鈕和一個ImageView,設置它的點擊事件,打開相冊選擇 ...
  • 1.這裡編寫一個類用於開啟活動,首先在onCreateView()方法中載入了我們剛剛創建的news_content_frag佈局,這個沒什麼好解釋的,接下來又提供了一個refresh()方法,這個方法就是用於將新聞的標題和內容顯示在界面上的。可以看到,這裡通過findViewById()方法分別獲 ...
  • 插件 1. "get" Navigate between screens, display snackbars, dialogs and bottomSheets, from anywhere in your code without context with Get. 1. "FlutterVis ...
  • 淺析Block閉包 簡單來說,block就是將函數及其上下文封裝起來的對象,從功能上可以把它看作是C++中的匿名函數,也可稱之為塊。 Block類型寫法: 返回值+(^塊名)+(參數)= ^(參數){ 內容 } 如下所示: Block結構 Block存儲區域 Block本質上也是OC對象,所以每個B ...
  • 再探NSString NSString應該是oc開發中最常用的一個數據類型了,這次對該類型再進行一次全方位的探索與總結。 NSString本質上屬於OC類對象,繼承於NSObject,遵守NSCopying, NSMutableCopying, NSSecureCoding協議。 NSMutable ...
  • OC屬性與實例變數 無論是java還是c++這些面向對象的語言都會有屬性這一概念,通常而言,對於java屬性和實例變數沒有什麼區別,java官方定義的屬性如下: 屬性是指get或者set方法名 去掉get或者set後,把剩餘的部分首字母改為小寫後,即為這個類的 屬性 其實objective C與之類 ...
  • 寫在前面 書籍介紹:本書由首章Node介紹為索引,涉及Node的各個方面,主要內容包含模塊機制的揭示、非同步I/O實現原理的展現、非同步編程的探討、記憶體控制的介紹、二進位數據Buffer的細節、Node中的網路編程基礎、Node中的Web開發、進程間的消息傳遞、Node測試以及通過Node構建產品需要的 ...
  • Notification 是什麼 MDN: Notifications API 的 Notification 介面用於配置和向用戶顯示桌面通知。這些通知的外觀和特定功能因平臺而異,但通常它們提供了一種向用戶非同步提供信息的方式。 其實,MDN 的說明已經可以讓我們很清楚知道 Notification ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...