gpt4 book ai didi

javascript - 更新不适用于 Chrome 但在 Firefox 上的按钮的 aria-checked 属性

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:57 25 4
gpt4 key购买 nike

我尝试使用 JS 更新切换按钮的 aria-checked 属性。它在 Firefox 上运行良好,但无法在 Chrome 上切换。

当我登录 JS 时,显然属性已更新。但是当我使用 Chrome devtool 查看时,实际的 UI 上没有。

这是 live on codepen .

Please checkout codepen link.

最佳答案

由于事件传播,

e.target 在 Chrome 中选择了 span,而不是事件绑定(bind)的按钮。

使用 e.currentTarget 而不是 e.target,它将选择事件最初绑定(bind)的按钮,而不是它的任何子元素。

// Rectangular switch
const rect = document.querySelector("#toggle-rect");
rect.addEventListener("click", e => {
let checked = e.currentTarget.getAttribute("aria-checked") === "true";
console.log(checked);
e.currentTarget.setAttribute("aria-checked", String(!checked));
});

// Rounded switch
const round = document.querySelector("#toggle-round");
round.addEventListener("click", e => {
let checked = e.currentTarget.getAttribute("aria-checked") === "true";
console.log(checked);
e.currentTarget.setAttribute("aria-checked", String(!checked));
});

// Rectangular switch
const rect = document.querySelector("#toggle-rect");
rect.addEventListener("click", e => {
let checked = e.currentTarget.getAttribute("aria-checked") === "true";
console.log(checked);
e.currentTarget.setAttribute("aria-checked", String(!checked));
});

// Rounded switch
const round = document.querySelector("#toggle-round");
round.addEventListener("click", e => {
let checked = e.currentTarget.getAttribute("aria-checked") === "true";
console.log(checked);
e.currentTarget.setAttribute("aria-checked", String(!checked));
});
/* reset button */

button {
background: none;
border: 0;
color: inherit;
padding: 0;
}


/* The switch - the box around the slider */

.switch {
position: relative;
/* display: inline-block; */
width: 60px;
height: 34px;
}


/* The slider */

.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
/* TODO: put disable color here */
-webkit-transition: 0.4s;
transition: 0.4s;
}

.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: 0.4s;
transition: 0.4s;
}

input:focus+.slider {
box-shadow: 0 0 1px #2196f3;
}


/* Rounded sliders */

.slider.round {
border-radius: 34px;
}

.slider.round:before {
border-radius: 50%;
}


/* changing the background while toggling */

[role="switch"][aria-checked="true"] .slider {
background-color: #2196f3;
}


/* toggling the handle */

[role="switch"][aria-checked="true"] .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
<!-- Rectangular switch -->
<button role="switch" aria-checked="false" class="switch" id="toggle-rect">
<span class="slider"></span>
</button>

<!-- Rounded switch -->
<button role="switch" aria-checked="false" class="switch" id="toggle-round">
<span class="slider round"></span>
</button>

关于javascript - 更新不适用于 Chrome 但在 Firefox 上的按钮的 aria-checked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51093817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com