PageSourceSearch

https://foolish.tw/wp-content/plugins/achang-related-posts/include…/assets/js/frontend.js?ver=1786429322

js foolish.tw collected 2026-10-06 19:56:59 UTC 4,078 bytes, 88 lines download raw bytes

1jQuery(document).ready(function($) {
2    // 使用事件委派,避免重複綁定事件
3    // 處理分類項目的點擊事件 (點擊整個項目都能觸發收闔)
4    $(document).on('click', '.achang_pt-category-tree-content .achang_pt-category-item, .achang_pt-category-tree-content .achang_pt-tag-item, .achang_pt-category-tree-content .achang_pt-toggle-icon', function(e) {
5        // 防止事件冒泡
6        e.stopPropagation();
7        
8        // 找到父級 section 元素
9        var $parentSection = $(this).closest('section');
10        
11        // 找到子分類列表
12        var $subTree = $parentSection.children('.achang_pt-category-children, .achang_pt-tag-children');
13        
14        // 找到文章列表
15        var $postList = $parentSection.children('.achang_pt-post-list');
16        
17        // 處理子分類列表的展開/收合
18        if ($subTree.length > 0) {
19            $subTree.toggleClass('collapsed');
20        }
21        
22        // 處理文章列表的展開/收合
23        if ($postList.length > 0) {
24            $postList.toggleClass('collapsed');
25        }
26        
27        // 更新圖示
28        var $icon = $parentSection.find('.achang_pt-toggle-icon').first();
29        // 如果有子分類或文章列表,且至少有一個是展開的,則顯示 '-'
30        if (($subTree.length > 0 && !$subTree.hasClass('collapsed')) || 
31            ($postList.length > 0 && !$postList.hasClass('collapsed'))) {
32            $icon.text('-');
33        } else {
34            $icon.text('+');
35        }
36    });
37    
38    // 處理展開全部按鈕點擊事件
39    $(document).on('click', '.achang_pt-category-tree-content .achang_pt-expand-all', function(e) {
40        e.preventDefault();
41        // 只對當前小工具實例內的元素進行操作
42        var $container = $(this).closest('.achang_pt-category-tree-content');
43        $container.find('.achang_pt-category-children, .achang_pt-tag-children').removeClass('collapsed');
44        $container.find('.achang_pt-post-list').removeClass('collapsed');
45        $container.find('.achang_pt-toggle-icon').text('-');
46    });
47    
48    // 處理收合全部按鈕點擊事件
49    $(document).on('click', '.achang_pt-category-tree-content .achang_pt-collapse-all', function(e) {
50        e.preventDefault();
51        // 只對當前小工具實例內的元素進行操作
52        var $container = $(this).closest('.achang_pt-category-tree-content');
53        $container.find('.achang_pt-category-children, .achang_pt-tag-children').addClass('collapsed');
54        $container.find('.achang_pt-post-list').addClass('collapsed');
55        $container.find('.achang_pt-toggle-icon').text('+');
56    });
57    
58    // 初始化預設狀態 - 對每個容器分別處理
59    function initializeIcons() {
60        $('.achang_pt-category-tree-content').each(function() {
61            var $container = $(this);
62            
63            // 為所有已展開的元素設置圖示為展開狀態
64            $container.find('.achang_pt-category-children:not(.collapsed), .achang_pt-post-list:not(.collapsed)').each(function() {
65                var $element = $(this);
66                var $parentSection = $element.closest('section');
67                var $icon = $parentSection.find('.achang_pt-toggle-icon').first();
68                $icon.text('-');
69            });
70            
71            // 為所有已收合的元素設置圖示為收合狀態
72            $container.find('.achang_pt-category-children.collapsed, .achang_pt-post-list.collapsed').each(function() {
73                var $element = $(this);
74                var $parentSection = $element.closest('section');
75                var $icon = $parentSection.find('.achang_pt-toggle-icon').first();
76                $icon.text('+');
77            });
78        });
79    }
80    
81    // 延遲執行以確保DOM完全加載
82    if (document.readyState === 'loading') {
83        document.addEventListener('DOMContentLoaded', initializeIcons);
84    } else {
85        // 如果DOM已經加載完成,則直接執行
86        setTimeout(initializeIcons, 100);
87    }
88});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.