python 之 前端開發( jQuery選擇器、篩選器、樣式操作、文本操作、屬性操作、文檔操作)

来源:https://www.cnblogs.com/mylu/archive/2019/08/20/11385885.html
-Advertisement-
Play Games

11.5 jQuery 引入方式: 文檔就緒事件: DOM文檔載入的步驟 基本篩選器: 表單常用篩選: 表單對象狀態屬性篩選: 註意:$(":checked")選擇時連select中的帶有selected屬性的option標簽也會選上,所以要用$("input:checked") <head> <s ...


11.5 jQuery

引入方式:

方式一:本地引入
<script src="jquery-3.3.1.min.js"></script>
<script>        //註意,一定在引入jQuery之後,再使用jQuery提供的各種操作
    code...
</script>
​
方式二:直接使用CDN
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script>
    code...
</script>

文檔就緒事件:

DOM文檔載入的步驟

1. 解析HTML結構。
2. 載入外部腳本和樣式表文件。
3. 解析並執行腳本代碼。
4. DOM樹構建完成。
5. 載入圖片等外部文件。
6. 頁面載入完畢
11.51 選擇器
id選擇器:
$("#i1")
標簽選擇器:
$("p")
class選擇器:
$(".c1")
所有元素選擇器:
$("*")
交集選擇器:
$("div.c1")     // 找到類為c1的div標簽
並集選擇器:
$("#i1,.c1,p")  // 找到所有id="i1"的標簽和class="c1"的標簽和p標簽
層級選擇器:
$("x y");       // x的所有後代y(子子孫孫)
$("x>y");       // x的所有兒子y(兒子)
$("x+y")        // 找到所有緊挨在x後面的兄弟y
$("x~y")        // x之後所有的兄弟y 
屬性選擇器:
$("input[type='checkbox']");    // 取到checkbox類型的input標簽
$("input[type!='text']");       // 取到類型不是text的input標簽

基本篩選器:

:first              // 第一個
:last               // 最後一個
:eq(index)          // 索引等於index的那個元素
:even               // 匹配所有索引值為偶數的元素,從 0 開始計數
:odd                // 匹配所有索引值為奇數的元素,從 0 開始計數
:gt(index)           // 匹配所有大於給定索引值的元素
:lt(index)          // 匹配所有小於給定索引值的元素
:not(選擇器)         // 過濾掉所有滿足not條件的標簽
:has(選擇器)         // 過濾出所有後代中滿足has條件的父標簽
//例如
$("div:has(h1)")    // 找到所有後代中有h1標簽的div標簽
$("div:has(.c1)")   // 找到所有後代中有c1樣式類的div標簽
$("li:not(.c1)")    // 找到所有不包含c1樣式類的li標簽
$("li:not(:has(a))") // 找到所有後代中不含a標簽的li標簽
11.52 表單常用篩選器

表單常用篩選:

:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
例:
$(":checkbox")      // 找到所有的checkbox

表單對象狀態屬性篩選:

:enabled
:disabled
:checked
:selected

註意:$(":checked")選擇時連select中的帶有selected屬性的option標簽也會選上,所以要用$("input:checked")

11.53 篩選器
下一個兄弟元素:
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2")  //從id="id"的標簽開始往下選擇兄弟標簽直到id=i2的標簽(不包含id=i2的標簽)
上一個兄弟元素:
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2") //從id="id"的標簽開始往上選擇兄弟標簽直到id=i2的標簽(不包含id=i2的標簽)
父親元素:
$("#id").parent()
$("#id").parents()                  // 查找當前元素的所有的父輩元素
$("#id").parentsUntil("某個父元素")   // 查找當前元素的所有的父輩元素,直到遇到匹配的那個元素為止。
兒子和兄弟元素:
$("#id").children();        // 所有子標簽
$("#id").siblings();        // 兄弟標簽、
查找
$("div").find("p") <==> $("div p")
//搜索所有與指定表達式匹配的元素,這個函數是找出正在處理的元素的後代元素的好方法。
篩選
$("div").filter(".c1")  <==>  $("div.c1")  // 從結果集中過濾出有c1樣式類的
//篩選出與指定表達式匹配的元素集合,這個方法用於縮小匹配的範圍,用逗號分隔多個表達式。
.first()    // 獲取匹配的第一個元素
.last()     // 獲取匹配的最後一個元素
.not()      // 從匹配元素的集合中刪除與指定表達式匹配的元素
.has()      // 保留包含特定後代的父元素,去掉那些不含有指定後代的元素。
.eq()       // 索引值等於指定值的元素
11.54 標簽操作之樣式操作
11.541 通過類屬性操作樣式
addClass();      // 添加指定的CSS類名。
removeClass();   // 移除指定的CSS類名。
hasClass();      // 判斷樣式存不存在
toggleClass();   // 切換CSS類名,如果有就移除,如果沒有就添加。
11.542 直接操作CSS樣式
css("color","red")                                    //DOM操作:Elem.style.color="red"
$("p").css("color", "red");                            //將所有p標簽的字體設置為紅色
$("#p1").css({"border":"1px solid black","color":"red"});//同時設置多個css樣式
11.543 jQuery版模態框
<head>
<style>
        .cover {
            position: fixed;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            background-color: rgba(0,0,0,0.4);
            z-index: 999;
        }
        .modal {
            background-color: white;
            height: 300px;
            width: 500px;
            position: absolute;
            top: 50%;
            left: 50%;
            z-index:1000;
            margin-top: -150px;
            margin-left: -250px;
        }
        .hide {
            display: none;      //不占空間,也不顯示
        }
    </style>
</head>
<body>
<div>
    <h1>海燕</h1>
    <p>在蒼茫的大海上,狂風捲積著烏雲,在烏雲和大海之間,海燕像黑色的閃電,在高傲的飛翔。</p>
</div>
<button id="b1">點我登錄</button>
<div class="cover hide"></div>
<div class="modal hide">
    <form action="">
        <p>
            <label>用戶名
                <input type="text">
            </label>
        </p>
        <p>
            <label>密碼
                <input type="password">
            </label>
        </p>
        <p>
            <input type="submit">
            <input type="button" id="cancel" value="取消">
        </p>
    </form>
</div>
<script src="jquery-3.3.1.min.js"></script>
<script>
    // var b1Ele=document.getElementById("b1");     //原生DOM對象
    // var b1Ele = $("#b1")[0];                  //通過jQuery對象找到DOM對象,找到按鈕,給它綁定事件,
    // b1Ele.onclick = function () {               //使用的是js對象
    //     $(".cover,.modal").removeClass("hide");  // 事件觸發後,找到那兩個div,移除它們的hide樣式類
    // };
var b1Ele = $("#b1");
     b1Ele.click(function () {
         $(".cover,.modal").removeClass("hide");
     });
​
    // var cancelButton = $("#cancel")[0];          //使用的是DOM對象
    // cancelButton.onclick = ()=>{
    //     $(".cover,.modal").addClass("hide");     // 事件觸發後,找到那兩個div,給它們添加hide樣式類
    // };
    var cancelButton = $("#cancel");
    cancelButton.click(function () {
        $(".cover,.modal").addClass("hide");
    });
</script>
</body>
View Code
11.544 位置
offset()                // 獲取匹配元素在當前視窗的相對偏移或設置元素位置,可設置
$(".c3").offset({top:284,left:400})
position()              // 獲取匹配元素相對父元素的偏移,不可設置
$(window).scrollTop()               // 獲取匹配元素相對滾動條頂部的偏移,可設置
$(window).scrollTop(0)              //獲取當前視窗相對滾動條頂部的偏移,並且可設置
$(window).scrollLeft()              // 獲取匹配元素相對滾動條左側的偏移,可設置

.offset()方法允許我們檢索一個元素相對於文檔(document)的當前位置。.position()的差別在於: .position()是相對於父級元素的位移。

11.545 尺寸
height()         //獲取當前標簽內容高度,並且可設置高度
width()         //獲取當前標簽內容寬度,並且可設置寬度
innerHeight()    //內容+padding
innerWidth()     //內容+padding
outerHeight()    //內容+padding+border
outerWidth()     //內容+padding+border
11.55 標簽操作之文本內容操作
text()                      //只查看所有標簽內的文本   
text(val)                   //先清空節點內容,再添加文本字元串:('<h1>我是h1</h1>')
註意:值為標簽的時候 不會被渲染為標簽元素 只會被當做值渲染到瀏覽器中
​
html()                      //查看所有子標簽,包括文本和子標簽
html(val)                   //先清空節點內容,可識別文本內的html標簽('<h1>我是h1</h1>')
$('ul').html('<a href="#">百度一下</a>')   
$('ul').html(function(){     //可以使用函數來設置所有匹配元素的內容
    return '哈哈哈'
}) 
​
val
// 用途:val()用於操作input、select、textarea的value值
// 示範一:
<input type="text" name="username" >
$('input[type=text]').val()                         //查看輸入框內的值或添加值
<input type="radio" name="sex" value="male">
<input type="radio" name="sex" value="female">
<input type="radio" name="sex" value="none">
$('input[type=radio]').val(['male',])                //查看所選選項或選擇選項,選擇選項時使用列表
// 示範二:
<input type="checkbox" name="hobbies" value="basketball">
<input type="checkbox" name="hobbies" value="football">
<input type="checkbox" name="hobbies" value="doublecolorball">
$('input[type=checkbox]').val(['basketball','football']) //查看所選選項或選擇選項(選擇選項時使用列表)
11.551 登錄註冊示例
    <style>
        .error {color: red;}
    </style>
<body>
<form action="" method="">
    <p>
        <label for="username">用戶名</label>
        <input type="text" id="username" name="username">
        <span class="error"></span>
    </p>
    <p>
        <label for="pwd">密碼</label>
        <input type="password" id="pwd" name="pwd">
        <span class="error"></span>
    </p>
    <p>
        <input type="submit" id="b1" value="登錄">
    </p>
</form>
<script src="jquery-3.3.1.min.js"></script>
<script>
    $("#b1").click(function () {
        var flag = true;
        $(".error").text("");
        var $username = $("#username");
        var $pwd = $("#pwd");
        
        if ($username.val().length === 0){            // 取input框的值(用戶名)判斷長度是否為0
            $username.next().text("用戶名不能為空!"); //找到class="error"的span標簽添加提示信息
            flag = false;                           //用戶名或密碼為空時不提交表單
        }
        if ($pwd.val().length === 0){                //取input框的值(密碼)判斷長度是否為0           
            $pwd.next().text("密碼不能為空!");       //找到class="error"的span標簽添加提示信息
            flag = false;
        }
        return flag;                      // 表單填寫有誤就會返回false,阻止submit按鈕預設的提交表單事件                          
    })
</script>
</body>
View Code
11.56 標簽操作之屬性操作

用於id、class、name、value等或自定義屬性:

<images src="1.jpg" alt="圖片不見了" title="這絕對正常的圖片">
attr(屬性名)                                                // 返回第一個匹配元素的屬性值
$('.box2 img').attr('title','美女')                         // 為所有匹配元素設置一個屬性值
$('.box2 img').attr({'title': '美女', 'alt':'圖片被狗吃了'})  // 為所有匹配元素設置多個屬性值
$('.box2 img').removeAttr('title')                          // 從每一個匹配的元素中刪除一個屬性

用於checkbox和radio:

<input type="radio" name="sex" value="male">
$(':radio[value=male]').prop('checked',true);// 設置屬性
<input type="checkbox" name="hobbies" value="basketball">
$("input :checkbox").prop('value')          // 獲取value屬性的值
$("input :checkbox").prop('checked',true);   // 設置屬性
$(':checkbox[value=football]').prop('checked',true);
$("table :checkbox").removeProp('value')     // 移除value屬性

註意:在1.x及2.x版本的jQuery中使用attr對checkbox進行賦值操作時會出bug,在3.x版本的jQuery中則沒有這個問題。為了相容性,我們在處理checkbox和radio的時候儘量使用特定的prop(),不要使用attr("checked", "checked")

總結:1. 對於標簽上有的能看到的屬性和自定義屬性都用attr 2. 對於返回布爾值的比如checkboxradiooption的是否被選中都用prop。

11.561 全選反選取消
<body>
<button id="b1">全選</button>
<button id="b2">取消</button>
<button id="b3">反選</button>
<table border="1">
    <thead>
    <tr>
        <th>#</th>
        <th>姓名</th>
        <th>愛好</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td><input type="checkbox"></td>
        <td>Egon</td>
        <td>喊麥</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>Alex</td>
        <td>吹牛逼</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>Yuan</td>
        <td>不洗頭</td>
    </tr>
    </tbody>
</table>
<script src="jquery-3.3.1.min.js"></script>
<script>
    // 全選
    $("#b1").click(function () {        
        $("table :checkbox").prop("checked", true)// 讓所有的checkbox選中
    });
    // 取消
    $("#b2").click(function () {        
        $("table :checkbox").prop("checked", false)// 讓所有的checkbox取消選中
    });
    // 反選
    $("#b3").click(function () {        
        //$("table input:not(:checked)").prop("checked", true); // 找到沒有選中的讓它們選中        
        //$("table input:checked").prop("checked", false);        // 找到所有選中的讓它們取消選中
         // 方法1:迴圈判斷
         var $checkboxs = $("table input:checkbox");
        for (let i=0;i<$checkboxs.length;i++){
             var $currentCheckbox = $($checkboxs[i]);
             if ($currentCheckbox.prop("checked")){    // 如果之前是選中的,則取消選擇                
                $currentCheckbox.prop("checked", false);
            }else {               
               $currentCheckbox.prop("checked", true);// 如果之前沒有選中,則選擇
            }
        }
        
        //方法2:直接取當前標簽的checked屬性的相反值
        for (let i=0;i<$checkboxs.length;i++){
            var $currentCheckbox = $($checkboxs[i]);
            var flag = $currentCheckbox.prop("checked");
            $currentCheckbox.prop("checked", !flag)
        }
        
        //	   

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

-Advertisement-
Play Games
更多相關文章
  • 5.1.如何派生內置不可變類型並修其改實例化行為 修改實例化行為 5.2.如何為創建大量實例節省記憶體 定義類的__slots__屬性,聲明實例有哪些屬性(關閉動態綁定) 5.3.如何創建可管理的對象屬性 一般寫法 用property裝飾器 ...
  • 索引是幫助MySQL高效獲取數據的排好序的數據結構 索引數據結構對比 二叉樹 左邊子節點的數據小於父節點數據,右邊子節點的數據大於父節點數據。 如果col2是索引,查找索引為89的行元素,那麼只需要查找兩次,就可以獲取到行元素所在的磁碟指針地址。 如果col1是索引,查找索引為6的行元素,那麼需要查 ...
  • 到目前為止,我們整個初級廣告檢索系統就初步開發完成了,我們來整體回顧一下我們的廣告系統。 整個廣告系統編碼結構如下: 1. 父模塊 主要是為了方便我們項目的統一管理 2. 這個模塊主要有2個作用,本身只應該作為資料庫腳本管理package來使用,但是我們在生成索引文件的過程中,為了方便,我就直接將導 ...
  • 所謂的列表推導式,就是指的輕量級迴圈創建列表。 基本使用方式 上面的列表推導式等價於下麵,只是代碼非常簡化。 在迴圈的過程中使用if 等價於 2個for迴圈 等價於 練習 生成一個[[1,2,3],[4,5,6]....]的列表最大值在100以內 首先考慮一下正常情況我們應該怎麼寫 然後再把它轉換成 ...
  • 有時候手工執行Python腳本跑的好好的,但是部署到Linux的crontab中後,就會遇到一些問題,最近終於有空整理一下這方面的內容,其實也是自己也踩了一些別人踩過的坑!這裡僅僅列舉個人遇到的一些小問題,經驗和精力問題,不能面面俱到,僅總結一下自己遇到的這些問題。 環境變數問題 cron中的環境變... ...
  • 4.1.如何讀寫csv數據 爬取豆瓣top250書籍 結果 把評分為9.0的書籍保存到book_out.csv文件中 4.2.如何讀寫excel 安裝兩個庫 讀取excel 求分數的總和 結果 ...
  • 前言: 使用python在讀取配置文件時,由於配置文件中存在特殊字元,讀取時出現了以下錯誤: 錯誤代碼: 解決方案: 使用 RawConfigParser()方法進行讀取即可,代碼如下: ...
  • Java的 If 條件語句 條件判斷 示例 1 : if if(表達式1){ 表達式2; } 如果表達式1的值是true, 就執行表達式2 public class HelloWorld { public static void main(String[] args) { boolean b = t ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...