<header><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"><meta name="hibp-verify" content="dweb_ahmm7tzpovjk0hkhflm8wqvu" />

<!--[if IE]>
<meta http-equiv="Refresh" content="0; URL=http://noie.ksepeses.com/">
<!--<![endif]-->
    <script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js?id=3N8xzwWYGoxEeDm5&ck=3N8xzwWYGoxEeDm5"></script>
<link rel="icon" type="image/x-icon" href="./favicon-16.ico" sizes="16x16">
<link rel="icon" type="image/png" href="./zyom.png" sizes="512x512">
<link rel="icon" href="./favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
<meta name="Keywords" content="扩科偶梦,知沅考试,偶像梦幻祭,知沅偶梦,扩展科目偶像梦幻祭,知沅教育,知沅教育出版社,扩展科目">
<meta name="Description" Content="我们的梦想永不终结！欢迎来到知沅教育出版社扩展科目偶像梦幻祭课程教材教学研究所官网~(〃'▽'〃)(〃'▽'〃)">
<meta name="msvalidate.01" content="F6FE2D5F15A458308AEA9CA31A96263F" />
<meta name="baidu-site-verification" content="codeva-9r28d9psyW" />

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2824368906056698"
     crossorigin="anonymous"></script>
</header>
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://m.ksepeses.com/index.php?action=history&amp;feed=atom&amp;title=Widget%3ATextToggleDisplay</id>
	<title>Widget:TextToggleDisplay - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://m.ksepeses.com/index.php?action=history&amp;feed=atom&amp;title=Widget%3ATextToggleDisplay"/>
	<link rel="alternate" type="text/html" href="https://m.ksepeses.com/index.php?title=Widget:TextToggleDisplay&amp;action=history"/>
	<updated>2026-04-04T17:01:07Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://m.ksepeses.com/index.php?title=Widget:TextToggleDisplay&amp;diff=276&amp;oldid=prev</id>
		<title>鹤訓：建立内容为“&lt;noinclude&gt;only for {{tl|切换显示按钮}}&lt;/noinclude&gt;&lt;includeonly&gt;&lt;!--{if !isset($wgTextToggleDisplay) || !$wgTextToggleDisplay}--&gt;&lt;!--{assign var=&quot;wgTextTogg…”的新页面</title>
		<link rel="alternate" type="text/html" href="https://m.ksepeses.com/index.php?title=Widget:TextToggleDisplay&amp;diff=276&amp;oldid=prev"/>
		<updated>2024-10-27T05:36:16Z</updated>

		<summary type="html">&lt;p&gt;建立内容为“&amp;lt;noinclude&amp;gt;only for {{tl|切换显示按钮}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--{if !isset($wgTextToggleDisplay) || !$wgTextToggleDisplay}--&amp;gt;&amp;lt;!--{assign var=&amp;quot;wgTextTogg…”的新页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;only for {{tl|切换显示按钮}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--{if !isset($wgTextToggleDisplay) || !$wgTextToggleDisplay}--&amp;gt;&amp;lt;!--{assign var=&amp;quot;wgTextToggleDisplay&amp;quot; value=true scope=&amp;quot;global&amp;quot;}--&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
window.RLQ = window.RLQ || [];&lt;br /&gt;
window.RLQ.push(() =&amp;gt; $(() =&amp;gt; {&lt;br /&gt;
    const cssSanitizer = (cssStr) =&amp;gt; (typeof cssStr === &amp;quot;string&amp;quot; ? cssStr : &amp;quot;&amp;quot;).replace(RegExp(decodeURIComponent(&amp;quot;%3C!--&amp;quot;), &amp;quot;g&amp;quot;), &amp;quot;&amp;quot;).replace(RegExp(decodeURIComponent(&amp;quot;-%3E&amp;quot;), &amp;quot;g&amp;quot;), &amp;quot;&amp;quot;).replace(/\/\//g, &amp;quot;&amp;quot;).replace(/url/g, &amp;quot;&amp;quot;).replace(/&amp;amp;/g, &amp;quot;&amp;quot;).replace(/pointer-event/g, &amp;quot;;&amp;quot;).replace(/display\s*:\s*none\s*!\s*important/g, &amp;quot;display: none&amp;quot;);&lt;br /&gt;
    const uuidv4 = () =&amp;gt; {&lt;br /&gt;
        let result = &amp;quot;&amp;quot;;&lt;br /&gt;
        while (result === &amp;quot;&amp;quot; || $(`#${result}, [name=&amp;quot;${result}&amp;quot;]`).length &amp;gt; 0) {&lt;br /&gt;
            result = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =&amp;gt;&lt;br /&gt;
                (c ^ crypto.getRandomValues(new Uint8Array(1))[0] &amp;amp; 15 &amp;gt;&amp;gt; c / 4).toString(16),&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    };&lt;br /&gt;
    const datasetParser = (ele) =&amp;gt; {&lt;br /&gt;
        const result = {&lt;br /&gt;
            config: {},&lt;br /&gt;
            data: {},&lt;br /&gt;
        };&lt;br /&gt;
        Object.entries(ele.dataset).filter(([n, m]) =&amp;gt; n.startsWith(&amp;quot;key-&amp;quot;) &amp;amp;&amp;amp; !/['&amp;quot;&amp;lt;&amp;gt;\\/]/.test(m)).forEach(([__key, _key]) =&amp;gt; {&lt;br /&gt;
            const value = ele.dataset[`value-${__key.substring(4)}`];&lt;br /&gt;
            if (_key.length &amp;gt; 0 &amp;amp;&amp;amp; value.length &amp;gt; 0) {&lt;br /&gt;
                const isConfig = _key.startsWith(&amp;quot;@&amp;quot;);&lt;br /&gt;
                const key = isConfig ? _key.substring(1) : _key;&lt;br /&gt;
                const base = result[isConfig ? &amp;quot;config&amp;quot; : &amp;quot;data&amp;quot;];&lt;br /&gt;
                base[key] = value;&lt;br /&gt;
                if (/@o(?:n|ff)$/.test(_key)) {&lt;br /&gt;
                    const id = _key.replace(/@o(?:n|ff)$/, &amp;quot;&amp;quot;);&lt;br /&gt;
                    if (!(id in base)) {&lt;br /&gt;
                        base[id] = value;&lt;br /&gt;
                    }&lt;br /&gt;
                } else if (_key.endsWith(&amp;quot;@input&amp;quot;)) {&lt;br /&gt;
                    base[_key] = value;&lt;br /&gt;
                    const id = _key.replace(/@input$/, &amp;quot;&amp;quot;);&lt;br /&gt;
                    if (!(id in base)) {&lt;br /&gt;
                        base[id] = &amp;quot;&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (!(`${key}@on` in base)) {&lt;br /&gt;
                        base[`${key}@on`] = value;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (!(`${key}@off` in base)) {&lt;br /&gt;
                        base[`${key}@off`] = value;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (!(`${key}@input` in base)) {&lt;br /&gt;
                        base[`${key}@input`] = &amp;quot;&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        return result;&lt;br /&gt;
    };&lt;br /&gt;
    const getEntries = (obj) =&amp;gt; Object.entries(obj).filter(([k, n]) =&amp;gt; !/@(?:on|off|input)$/.test(k) &amp;amp;&amp;amp; !/['&amp;quot;&amp;lt;&amp;gt;\\/]/.test(n));&lt;br /&gt;
    const textToggleDisplayStyle = {};&lt;br /&gt;
    $(&amp;quot;.textToggleDisplayStyle&amp;quot;).each((_, ele) =&amp;gt; {&lt;br /&gt;
        const dataset = datasetParser(ele).data;&lt;br /&gt;
        getEntries(dataset).forEach(([id, style]) =&amp;gt; {&lt;br /&gt;
            textToggleDisplayStyle[id] = style;&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    $(&amp;quot;.textToggleDisplay&amp;quot;).each((_, ele) =&amp;gt; {&lt;br /&gt;
        if (ele.dataset.id in textToggleDisplayStyle) {&lt;br /&gt;
            $(ele).attr(&amp;quot;style&amp;quot;, cssSanitizer(textToggleDisplayStyle[ele.dataset.id]));&lt;br /&gt;
        }&lt;br /&gt;
    }).addClass(&amp;quot;hidden&amp;quot;);&lt;br /&gt;
    const defaultInputs = [];&lt;br /&gt;
    $(&amp;quot;.textToggleDisplayButtons&amp;quot;).each((_, ele) =&amp;gt; {&lt;br /&gt;
        const self = $(ele);&lt;br /&gt;
        const parsedDataset = datasetParser(ele);&lt;br /&gt;
        const ifRadio = &amp;quot;radio&amp;quot; in parsedDataset.config &amp;amp;&amp;amp; parsedDataset.config.radio.length &amp;gt; 0;&lt;br /&gt;
        const ifForceNoCancel = &amp;quot;forceNoCancel&amp;quot; in parsedDataset.config &amp;amp;&amp;amp; parsedDataset.config.forceNoCancel.length &amp;gt; 0;&lt;br /&gt;
        const ifReverse = &amp;quot;reverse&amp;quot; in parsedDataset.config &amp;amp;&amp;amp; parsedDataset.config.reverse.length &amp;gt; 0;&lt;br /&gt;
        const name = uuidv4();&lt;br /&gt;
        let hasDefault = false;&lt;br /&gt;
        self.children(&amp;quot;span[data-key]&amp;quot;).each((_, e) =&amp;gt; {&lt;br /&gt;
            if (/['&amp;quot;&amp;lt;&amp;gt;\\/]/.test(e.dataset.key)) {&lt;br /&gt;
                e.remove();&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            const $e = $(e);&lt;br /&gt;
            const input = $(&amp;quot;&amp;lt;input/&amp;gt;&amp;quot;);&lt;br /&gt;
            input.attr({&lt;br /&gt;
                &amp;quot;data-id&amp;quot;: e.dataset.key,&lt;br /&gt;
                type: ifRadio ? &amp;quot;radio&amp;quot; : &amp;quot;checkbox&amp;quot;,&lt;br /&gt;
            }).addClass(ifReverse ? &amp;quot;textToggleDisplayButtonInputReverse&amp;quot; : &amp;quot;textToggleDisplayButtonInput&amp;quot;);&lt;br /&gt;
            if (ifRadio) {&lt;br /&gt;
                input.attr(&amp;quot;name&amp;quot;, name);&lt;br /&gt;
            }&lt;br /&gt;
            const label = $(&amp;quot;&amp;lt;label/&amp;gt;&amp;quot;);&lt;br /&gt;
            $e.children().appendTo(label);&lt;br /&gt;
            label.prepend(input).appendTo(e).attr(&amp;quot;data-id&amp;quot;, e.dataset.key).addClass(&amp;quot;textToggleDisplayButtonLabel&amp;quot;);&lt;br /&gt;
            $e.find(&amp;quot;*&amp;quot;).each((_, e) =&amp;gt; {&lt;br /&gt;
                e.addEventListener(&amp;quot;click&amp;quot;, (evt) =&amp;gt; {&lt;br /&gt;
                    evt.stopImmediatePropagation();&lt;br /&gt;
                    evt.stopPropagation();&lt;br /&gt;
                    if (!$(evt.target).is(input)) {&lt;br /&gt;
                        evt.preventDefault();&lt;br /&gt;
                        if (ifRadio ? !input.prop(&amp;quot;checked&amp;quot;) : true) {&lt;br /&gt;
                            input.prop(&amp;quot;checked&amp;quot;, !input.prop(&amp;quot;checked&amp;quot;)).trigger(&amp;quot;change&amp;quot;);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }, {&lt;br /&gt;
                    capture: true,&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            if (e.dataset.key === parsedDataset.config.default) {&lt;br /&gt;
                defaultInputs.push(input[0]);&lt;br /&gt;
                hasDefault = true;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        if (ifRadio &amp;amp;&amp;amp; (!hasDefault || !ifForceNoCancel)) {&lt;br /&gt;
            const input = $(&amp;quot;&amp;lt;input/&amp;gt;&amp;quot;);&lt;br /&gt;
            const inputId = uuidv4();&lt;br /&gt;
            input.attr({&lt;br /&gt;
                &amp;quot;data-id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
                &amp;quot;data-radio-cancel&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
                id: inputId,&lt;br /&gt;
                name,&lt;br /&gt;
                type: &amp;quot;radio&amp;quot;,&lt;br /&gt;
            }).addClass(ifReverse ? &amp;quot;textToggleDisplayButtonInputReverse&amp;quot; : &amp;quot;textToggleDisplayButtonInput&amp;quot;).css({&lt;br /&gt;
                &amp;quot;margin-left&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
                &amp;quot;margin-right&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
                width: &amp;quot;0&amp;quot;,&lt;br /&gt;
            });&lt;br /&gt;
            const label = $(&amp;quot;&amp;lt;label/&amp;gt;&amp;quot;);&lt;br /&gt;
            const span = $(&amp;quot;&amp;lt;span/&amp;gt;&amp;quot;);&lt;br /&gt;
            span.text(&amp;quot;取消选择&amp;quot;);&lt;br /&gt;
            label.attr({&lt;br /&gt;
                &amp;quot;data-id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
                &amp;quot;for&amp;quot;: inputId,&lt;br /&gt;
            }).addClass(&amp;quot;textToggleDisplayButtonLabel cancelButton&amp;quot;);&lt;br /&gt;
            self.append(label.append(input).append(span));&lt;br /&gt;
            if (!hasDefault) {&lt;br /&gt;
                defaultInputs.push(input[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    $(&amp;quot;.textToggleDisplayButtonsStyle&amp;quot;).each((_, ele) =&amp;gt; {&lt;br /&gt;
        const parsedDataset = datasetParser(ele);&lt;br /&gt;
        $(&amp;quot;.textToggleDisplayButtonLabel.cancelButton&amp;quot;).attr({&lt;br /&gt;
            &amp;quot;data-style-off&amp;quot;: parsedDataset.config[&amp;quot;cancel@off&amp;quot;] || &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;data-style-on&amp;quot;: parsedDataset.config[&amp;quot;cancel@on&amp;quot;] || &amp;quot;&amp;quot;,&lt;br /&gt;
        });&lt;br /&gt;
        $(&amp;quot;.textToggleDisplayButtonLabel.cancelButton &amp;gt; input&amp;quot;).attr(&amp;quot;style&amp;quot;, cssSanitizer(parsedDataset.config[&amp;quot;cancel@input&amp;quot;]));&lt;br /&gt;
        getEntries(parsedDataset.data).forEach(([id]) =&amp;gt; {&lt;br /&gt;
            $(`.textToggleDisplayButtonLabel[data-id=&amp;quot;${id}&amp;quot;]`).attr({&lt;br /&gt;
                &amp;quot;data-style-off&amp;quot;: parsedDataset.data[`${id}@off`] || &amp;quot;&amp;quot;,&lt;br /&gt;
                &amp;quot;data-style-on&amp;quot;: parsedDataset.data[`${id}@on`] || &amp;quot;&amp;quot;,&lt;br /&gt;
            }).children(&amp;quot;input&amp;quot;).attr(&amp;quot;style&amp;quot;, cssSanitizer(parsedDataset.data[`${id}@input`]));&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    const setInputStatus = (input, checked) =&amp;gt; {&lt;br /&gt;
        const label = $(input).closest(&amp;quot;.textToggleDisplayButtonLabel&amp;quot;);&lt;br /&gt;
        const span = label.children(&amp;quot;.on&amp;quot;);&lt;br /&gt;
        label[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;on&amp;quot;).attr(&amp;quot;style&amp;quot;, cssSanitizer(label.attr(checked ? &amp;quot;data-style-on&amp;quot; : &amp;quot;data-style-off&amp;quot;)));&lt;br /&gt;
        if (checked) {&lt;br /&gt;
            span.attr(&amp;quot;style&amp;quot;, cssSanitizer(textToggleDisplayStyle[input.dataset.id]));&lt;br /&gt;
        } else {&lt;br /&gt;
            span.removeAttr(&amp;quot;style&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        const labelContainer = label.closest(&amp;quot;span[data-order][data-key]&amp;quot;);&lt;br /&gt;
        labelContainer.prev(&amp;quot;span[data-order][data-key]&amp;quot;).children(&amp;quot;.textToggleDisplayButtonLabel&amp;quot;).last()[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;before-on&amp;quot;);&lt;br /&gt;
        labelContainer.next(&amp;quot;span[data-order][data-key]&amp;quot;).children(&amp;quot;.textToggleDisplayButtonLabel&amp;quot;).first()[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;after-on&amp;quot;);&lt;br /&gt;
    };&lt;br /&gt;
    const setLabelStatus = () =&amp;gt; {&lt;br /&gt;
        const map = Object.fromEntries($(&amp;quot;.textToggleDisplay&amp;quot;).toArray().map(({&lt;br /&gt;
            dataset: {&lt;br /&gt;
                id,&lt;br /&gt;
            },&lt;br /&gt;
            classList,&lt;br /&gt;
        }) =&amp;gt; [id, !classList.contains(&amp;quot;textToggleDisplay-off&amp;quot;)]));&lt;br /&gt;
        for (const input of $(&amp;quot;.textToggleDisplayButtonInput:not(.textToggleDisplayButtonLabel.cancelButton &amp;gt; input)&amp;quot;)) {&lt;br /&gt;
            const {&lt;br /&gt;
                dataset: {&lt;br /&gt;
                    id,&lt;br /&gt;
                },&lt;br /&gt;
            } = input;&lt;br /&gt;
            const cancelInput = $(input).closest(&amp;quot;.textToggleDisplayButtons&amp;quot;).find(&amp;quot;.textToggleDisplayButtonLabel.cancelButton &amp;gt; input:checked&amp;quot;);&lt;br /&gt;
            const checked = cancelInput.length &amp;gt; 0 ? false : id.split(&amp;quot;$&amp;quot;).filter((i) =&amp;gt; !map[i]).length === 0;&lt;br /&gt;
            input.checked = checked;&lt;br /&gt;
            setInputStatus(input, checked);&lt;br /&gt;
        }&lt;br /&gt;
        for (const input of $(&amp;quot;.textToggleDisplayButtonInputReverse:not(.textToggleDisplayButtonLabel.cancelButton &amp;gt; input)&amp;quot;)) {&lt;br /&gt;
            const {&lt;br /&gt;
                dataset: {&lt;br /&gt;
                    id,&lt;br /&gt;
                },&lt;br /&gt;
            } = input;&lt;br /&gt;
            const cancelInput = $(input).closest(&amp;quot;.textToggleDisplayButtons&amp;quot;).find(&amp;quot;.textToggleDisplayButtonLabel.cancelButton &amp;gt; input:checked&amp;quot;);&lt;br /&gt;
            const checked = cancelInput.length &amp;gt; 0 ? false : id.split(&amp;quot;$&amp;quot;).filter((i) =&amp;gt; map[i]).length === 0;&lt;br /&gt;
            input.checked = checked;&lt;br /&gt;
            setInputStatus(input, !checked);&lt;br /&gt;
        }&lt;br /&gt;
        for (const input of $(&amp;quot;.textToggleDisplayButtonLabel.cancelButton &amp;gt; input&amp;quot;)) {&lt;br /&gt;
            const checked = $(input).closest(&amp;quot;.textToggleDisplayButtons&amp;quot;).find(&amp;quot;input&amp;quot;).not(input).toArray().filter(({ checked }) =&amp;gt; checked).length === 0;&lt;br /&gt;
            input.checked = checked;&lt;br /&gt;
            setInputStatus(input, checked);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    const updateSilbing = () =&amp;gt; {&lt;br /&gt;
        $(&amp;quot;textToggleDisplay-before-on&amp;quot;).each((_, ele) =&amp;gt; {&lt;br /&gt;
            const $ele = $(ele);&lt;br /&gt;
            if ($ele.next(&amp;quot;.textToggleDisplay&amp;quot;).is(&amp;quot;:not(.textToggleDisplay-on)&amp;quot;)) {&lt;br /&gt;
                $ele.removeClass(&amp;quot;textToggleDisplay-before-on&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        $(&amp;quot;.textToggleDisplay:not(.textToggleDisplay-on) + .textToggleDisplay-after-on&amp;quot;).removeClass(&amp;quot;textToggleDisplay-after-on&amp;quot;);&lt;br /&gt;
        $(&amp;quot;.textToggleDisplay-on&amp;quot;).prev(&amp;quot;.textToggleDisplay&amp;quot;).addClass(&amp;quot;textToggleDisplay-before-on&amp;quot;).end().next(&amp;quot;.textToggleDisplay&amp;quot;).addClass(&amp;quot;textToggleDisplay-after-on&amp;quot;);&lt;br /&gt;
    };&lt;br /&gt;
    $(&amp;quot;.textToggleDisplayButtonInput&amp;quot;).on(&amp;quot;change&amp;quot;, ({&lt;br /&gt;
        target,&lt;br /&gt;
    }) =&amp;gt; {&lt;br /&gt;
        const {&lt;br /&gt;
            dataset: {&lt;br /&gt;
                id,&lt;br /&gt;
                radioCancel,&lt;br /&gt;
            },&lt;br /&gt;
            checked,&lt;br /&gt;
        } = target;&lt;br /&gt;
        const ids = id.split(&amp;quot;$&amp;quot;);&lt;br /&gt;
        const self = $(target);&lt;br /&gt;
        const label = self.closest(&amp;quot;.textToggleDisplayButtonLabel&amp;quot;);&lt;br /&gt;
        const textToggleDisplayTarget = $(ids.map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;));&lt;br /&gt;
        const textToggleDisplayButtons = self.closest(&amp;quot;.textToggleDisplayButtons&amp;quot;);&lt;br /&gt;
        const { config: { toggleClass, radio } } = datasetParser(textToggleDisplayButtons[0]);&lt;br /&gt;
        let toggleClassName = typeof toggleClass === &amp;quot;string&amp;quot; &amp;amp;&amp;amp; toggleClass.length &amp;gt; 0 ? toggleClass : &amp;quot;hidden&amp;quot;;&lt;br /&gt;
        if (toggleClassName !== &amp;quot;hidden&amp;quot;) {&lt;br /&gt;
            textToggleDisplayTarget.removeClass(&amp;quot;hidden&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        toggleClassName += &amp;quot; textToggleDisplay-off&amp;quot;;&lt;br /&gt;
        if (radioCancel?.length &amp;gt; 0) {&lt;br /&gt;
            label[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;on&amp;quot;).attr(&amp;quot;style&amp;quot;, cssSanitizer(label.attr(checked ? &amp;quot;data-style-on&amp;quot; : &amp;quot;data-style-off&amp;quot;)));&lt;br /&gt;
            $(textToggleDisplayButtons.find(&amp;quot;.textToggleDisplayButtonLabel &amp;gt; input&amp;quot;).toArray().flatMap(({ dataset: { id } }) =&amp;gt; id.split(&amp;quot;$&amp;quot;)).map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;)).addClass(toggleClassName).removeClass(&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            textToggleDisplayTarget[checked ? &amp;quot;removeClass&amp;quot; : &amp;quot;addClass&amp;quot;](toggleClassName)[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
            if (radio?.length &amp;gt; 0 &amp;amp;&amp;amp; checked) {&lt;br /&gt;
                const siblings = $(textToggleDisplayButtons.find(&amp;quot;.textToggleDisplayButtonLabel &amp;gt; input&amp;quot;).not(target).toArray().flatMap(({ dataset: { id } }) =&amp;gt; id.split(&amp;quot;$&amp;quot;)).map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;));&lt;br /&gt;
                siblings.addClass(toggleClassName).removeClass(&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        setLabelStatus();&lt;br /&gt;
        updateSilbing();&lt;br /&gt;
    });&lt;br /&gt;
    $(&amp;quot;.textToggleDisplayButtonInputReverse&amp;quot;).on(&amp;quot;change&amp;quot;, ({&lt;br /&gt;
        target,&lt;br /&gt;
    }) =&amp;gt; {&lt;br /&gt;
        const {&lt;br /&gt;
            dataset: {&lt;br /&gt;
                id,&lt;br /&gt;
                radioCancel,&lt;br /&gt;
            },&lt;br /&gt;
            checked,&lt;br /&gt;
        } = target;&lt;br /&gt;
        const ids = id.split(&amp;quot;$&amp;quot;);&lt;br /&gt;
        const self = $(target);&lt;br /&gt;
        const label = self.closest(&amp;quot;.textToggleDisplayButtonLabel&amp;quot;);&lt;br /&gt;
        const textToggleDisplayTarget = $(ids.map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;));&lt;br /&gt;
        const textToggleDisplayButtons = self.closest(&amp;quot;.textToggleDisplayButtons&amp;quot;);&lt;br /&gt;
        const { config: { toggleClass, radio } } = datasetParser(textToggleDisplayButtons[0]);&lt;br /&gt;
        let toggleClassName = typeof toggleClass === &amp;quot;string&amp;quot; &amp;amp;&amp;amp; toggleClass.length &amp;gt; 0 ? toggleClass : &amp;quot;hidden&amp;quot;;&lt;br /&gt;
        if (toggleClassName !== &amp;quot;hidden&amp;quot;) {&lt;br /&gt;
            textToggleDisplayTarget.removeClass(&amp;quot;hidden&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        toggleClassName += &amp;quot; textToggleDisplay-off&amp;quot;;&lt;br /&gt;
        if (radioCancel?.length &amp;gt; 0) {&lt;br /&gt;
            label[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](&amp;quot;on&amp;quot;).attr(&amp;quot;style&amp;quot;, cssSanitizer(label.attr(checked ? &amp;quot;data-style-on&amp;quot; : &amp;quot;data-style-off&amp;quot;)));&lt;br /&gt;
            $(textToggleDisplayButtons.find(&amp;quot;.textToggleDisplayButtonLabel &amp;gt; input&amp;quot;).toArray().flatMap(({ dataset: { id } }) =&amp;gt; id.split(&amp;quot;$&amp;quot;)).map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;)).addClass(toggleClassName).removeClass(&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            textToggleDisplayTarget[checked ? &amp;quot;addClass&amp;quot; : &amp;quot;removeClass&amp;quot;](toggleClassName)[checked ? &amp;quot;removeClass&amp;quot; : &amp;quot;addClass&amp;quot;](&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
            if (radio?.length &amp;gt; 0 &amp;amp;&amp;amp; checked) {&lt;br /&gt;
                const siblings = $(textToggleDisplayButtons.find(&amp;quot;.textToggleDisplayButtonLabel &amp;gt; input&amp;quot;).not(target).toArray().flatMap(({ dataset: { id } }) =&amp;gt; id.split(&amp;quot;$&amp;quot;)).map((i) =&amp;gt; `.textToggleDisplay[data-id=&amp;quot;${i}&amp;quot;]`).join(&amp;quot;, &amp;quot;));&lt;br /&gt;
                siblings.removeClass(toggleClassName).addClass(&amp;quot;textToggleDisplay-on&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        setLabelStatus();&lt;br /&gt;
        updateSilbing();&lt;br /&gt;
    });&lt;br /&gt;
    for (const ele of defaultInputs) {&lt;br /&gt;
        $(ele).prop(&amp;quot;checked&amp;quot;, true).trigger(&amp;quot;change&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    $(window).on(&amp;quot;beforeunload&amp;quot;, () =&amp;gt; {&lt;br /&gt;
        $(&amp;quot;.textToggleDisplayButtons input[type=checkbox]&amp;quot;).prop(&amp;quot;checked&amp;quot;, false);&lt;br /&gt;
    });&lt;br /&gt;
}));&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;style&amp;gt;&lt;br /&gt;
.textToggleDisplayButtons {&lt;br /&gt;
    display: inline-flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    align-items: baseline;&lt;br /&gt;
    align-content: flex-start;&lt;br /&gt;
    user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.textToggleDisplayButtonLabel {&lt;br /&gt;
    border: 1px solid rgba(0, 0, 0, .3);&lt;br /&gt;
    border-left-width: 4px;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    flex: 1 0 auto;&lt;br /&gt;
    margin: 4px;&lt;br /&gt;
    padding: 0 8px;&lt;br /&gt;
    box-shadow: 1px 1px 2px black;&lt;br /&gt;
    color: rgba(0, 0, 0, .7);&lt;br /&gt;
    transition: .13s ease-in-out all;&lt;br /&gt;
    background-color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.textToggleDisplayButtonLabel.cancelButton {&lt;br /&gt;
    line-height: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.textToggleDisplayButtonLabel.on {&lt;br /&gt;
    border-color: rgba(0, 0, 0, 1);&lt;br /&gt;
    color: rgba(0, 0, 0, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.textToggleDisplay.hidden,&lt;br /&gt;
.textToggleDisplayButtonsStyle,&lt;br /&gt;
.textToggleDisplayStyle,&lt;br /&gt;
.textToggleDisplayButtonLabel:not(.on) .textToggleDisplayButtonLabelText.on,&lt;br /&gt;
.textToggleDisplayButtonLabel.on .textToggleDisplayButtonLabelText.off,&lt;br /&gt;
.textToggleDisplayButtonLabel.cancelButton &amp;gt; input {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&amp;lt;!--{/if}--&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>鹤訓</name></author>
	</entry>
</feed>