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

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

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


【目錄】

一、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 


	
您的分享是我們最大的動力!

更多相關文章
  • 在做移動端網站時,有時因技術問題或其他原因無法製作響應式版面,而移動端頁面只能放到子目錄下,但是手機端通過搜索引擎進入網站電腦端子頁面,無法匹配到移動端頁面,使得用戶體驗很不好,即影響排名也影響轉化。這裡有一個js代碼可以實現用戶使用手機訪問電腦端,自動跳轉到對應手機頁面。舉例:一個pc頁面http ...
  • 動畫 參考閱讀: https://www.cnblogs.com/xiaoyuanqujing/articles/11670140.html 插件機制(乾貨滿滿) 參考閱讀: https://www.cnblogs.com/xiaoyuanqujing/articles/11670482.html ...
  • 當我們在服務端渲染 Vue 應用時,無論伺服器執行多少次渲染,大部分 VNode 渲染出的字元串是不變的,它們有一些來自於模板的靜態 html,另一些則來自模板動態渲染的節點(雖然在客戶端動態節點有可能會變化,但是在服務端它們是不變的)。將這兩種類型的節點提取出來,僅在服務端渲染真正動態的節點(se ...
  • 問題描述: 有這樣的一段字元串: "<p class='test' id='wise'>123 456 789<br>hello<span title='hello' style='width: 200px;height:100px;' src='//www.wisewrong.com/img/12 ...
  • 路由參數解耦 一般在組件內使用路由參數,大多數人會這樣做: export default { methods: { getParamsId() { return this.$route.params.id } } } 在組件中使用 $route 會使之與其對應路由形成高度耦合,從而使組件只能在某些特 ...
  • 一、簡介 1、項目介紹 (1)基本介紹 使用 vue 以及 element-ui 搭建一個 後臺管理系統的模板。 當然,這類模板網上有很多,可以直接下載使用。 寫這個項目的目的,純屬練手(寫的比較糙)。 【layuiAdmin 後臺管理模板:(付費)】 https://www.layui.com/a ...
  • 1、Token:token是客戶端頻繁向伺服器端請求數據,伺服器頻繁的去資料庫查詢用戶名和密碼進行對比,判斷用戶名和密碼正確與否,並作出相應的提示,在這樣的背景下,token便應運而生了。 2、使用token的目的:token的目的是為了減輕伺服器的壓力,減少頻繁的查詢資料庫。 3、在前端請求後臺的 ...
  • 今天我們來談談Web和前端開發過程中需要學習什麼?前端開發需要使用什麼開發工具?也簡單介紹前端開發前景和薪水。 前端工程師的主要職責: 前端工程師在不同的公司有不同的功能,但性質相似。 1、網站設計與網頁界面開發 2、做網站界面開發 3、Web界面開發,前端數據綁定,前臺邏輯 4、設計、開發、數據 ...
一周排行
  • 文章篇幅較長,閱讀完大概20min,建議收藏閱讀, 讀完會有收穫。歡迎點贊關註 原文鏈接:https://www.softwaretestinghelp.com/types-of-software-testing/ 有多少軟體測試類型呢? 我們作為測試人員瞭解很多種不同的軟體測試類型,例如功能測試( ...
  • 過場CG: 接到公司領導的文件指示,“小熊”需要在6月底去海外執行一個行動代號為【定時任務】的營救計劃,這個計劃關係到公司某個項目的生死(數據安全漏洞),作戰部擬定兩個作戰方案: 方案一:使用務定時任務框架quartz; 方案二:使用windows Service服務。 最終的作戰方案為:兩者配套使 ...
  • 為什麼編寫TaskSchedulerEx類? 因為.NET預設線程池只有一個線程池,如果某個批量任務一直占著大量線程,甚至耗盡預設線程池,則會嚴重影響應用程式域中其它任務或批量任務的性能。 特點: 1、使用獨立線程池,線程池中線程分為核心線程和輔助線程,輔助線程會動態增加和釋放,且匯流排程數不大於參數 ...
  • 前幾天,公眾號後臺有朋友在問Core的中間件,所以專門抽時間整理了這樣一篇文章。 一、前言 中間件(Middleware)最初是一個機械上的概念,說的是兩個不同的運動結構中間的連接件。後來這個概念延伸到軟體行業,大家把應用操作系統和電腦硬體之間過渡的軟體或系統稱之為中間件,比方驅動程式,就是一個典型 ...
  • 參考文檔: https://www.cnblogs.com/liaods/p/10101513.html https://www.cnblogs.com/zyz-Notes/p/12030281.html 本示例使用MVC項目做演示(不推薦,推薦直接用WebAPI),框架版本使用 4.6.2 為了支 ...
  • 引用NModbus 在NuGet搜索NModbus,添加引用。 封裝ModbusTcp類 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpCl ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • Microsoft.AspNetCore.Mvc.Versioning //引入程式集 .net core 下麵api的版本控製作用不需要多說,可以查閱https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通過鏈接、header此類 ...
  • 結合 AOP 輕鬆處理事件發佈處理日誌 Intro 前段時間,實現了 EventBus 以及 EventQueue 基於 Event 的事件處理,但是沒有做日誌(EventLog)相關的部分,原本想增加兩個介面, 處理事件發佈日誌和事件處理日誌,最近用了 AOP 的思想處理了 EntityFrame ...
  • 什麼是sam 轉換 Single Abstract Method 實際上這是java8中提出的概念,你就把他理解為是一個方法的介面的就可以了 看一下我們每天都在使用的線程池 ExecutorService executorService= Executors.newScheduledThreadPo ...