首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

jQuery toggle 顯示隱藏失效:選擇器上下文 this 導致找不到目標元素

     編輯:程式設計綜合問答

代碼意圖:點擊 .stopdetail 切換顯示同級/子級 .serlist_bd_station_jingting,但點擊無反應。

錯誤代碼分析

$('.stopdetail').click(function() {
    $('.serlist_bd_station_jingting', this).toggle(300); // 錯誤:this 是 .stopdetail 元素
});
  • $('.serlist_bd_station_jingting', this) 表示**在 this (即 .stopdetail) 內部查找** .serlist_bd_station_jingting。
  • 但 HTML 結構中 .serlist_bd_station_jingting 是 .stopdetail 的**兄弟元素** (同屬 li.serlist_bd_station 下),非後代 → 找不到 → toggle 無效果。

正確選擇器策略

  1. 兄弟元素選擇 (推薦,結構穩定):
    $(this).siblings('.serlist_bd_station_jingting').toggle(300);
  2. 父級查找:
    $(this).closest('li').find('.serlist_bd_station_jingting').toggle(300);
  3. 全局唯一 ID (若唯一):
    $('#uniqueId').toggle(300);

修正後完整代碼

$(function() {
    $('.serlist_bd_station_jingting').hide();
    $('.stopdetail').click(function() {
        $(this).siblings('.serlist_bd_station_jingting').toggle(300);
        // 或 $(this).closest('li').find('.serlist_bd_station_jingting').toggle(300);
    });
});

關鍵概念

  • $(selector, context) ≡ $(context).find(selector):**僅搜索後代**。
  • .siblings()、**.closest()** 是處理同級/祖先關係的標準工具。
  • HTML 結構決定選擇器寫法,調試時用 console.log($(this).siblings(...).length) 驗證選中數量。

移除錯誤的 this 上下文參數,改用 siblings() 或 closest().find() 即可恢復切換功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved