gpt4 book ai didi

javascript - 如何使用 jquery 动态更改开关的状态?

转载 作者:行者123 更新时间:2023-11-28 05:10:16 25 4
gpt4 key购买 nike

我有一个完全用 CSS 设计的开关图标。我从这个页面得到了开关的设计 https://www.w3schools.com/howto/howto_css_switch.asp以及堆栈溢出中此答案对交换机的一些添加修改 https://stackoverflow.com/a/39846603/5550284 .

这是目前的样子

    <!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style type="text/css">
.switch {
position: relative;
display: inline-block;
width: 90px;
height: 34px;
}

.switch input {display:none;}

.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ca2222;
-webkit-transition: .4s;
transition: .4s;
}

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

input:checked + .slider {
background-color: #2ab934;
}

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

input:checked + .slider:before {
-webkit-transform: translateX(55px);
-ms-transform: translateX(55px);
transform: translateX(55px);
}

/*------ ADDED CSS ---------*/
.on
{
display: none;
}

.on, .off
{
color: white;
position: absolute;
transform: translate(-50%,-50%);
top: 50%;
left: 50%;
font-size: 10px;
font-family: Verdana, sans-serif;
}

input:checked+ .slider .on
{display: block;}

input:checked + .slider .off
{display: none;}

/*--------- END --------*/

/* Rounded sliders */
.slider.round {
border-radius: 34px;
}

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

</style>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


</head>
<body>
<label class="switch">
<input type="checkbox" id="togBtn">
<div class="slider round">
<span class="on">ON</span>
<span class="off">OFF</span>
</div>
</label>


<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<script type="text/javascript">


</script>
</body>
</html>

现在我实际上想根据后端给定的标志使用 JavaScript 更改开关的状态。

我就是这样做的

      if(response.data == "t"){
$('.switch-off').remove();
$('.switch-on').remove();
$('.toggle-slider').append('<span class="switch-on"></span>');
console.log("Prompt ON")
}
else if (response.data == "f") {
$('.switch-on').remove();
$('.switch-off').remove();
$('.toggle-slider').append('<span class="switch-off"></span>');
console.log("Prompt OFF")
}

这里假设 response 是后端发送的一个对象,它有一个名为 data 的字段,其中包含标志值 tf.

但它似乎没有做任何事情,在 Firefox 中使用检查器,我看到 span 元素在切换时随机出现和消失,没有任何固定行为。我怀疑开关的 CSS 以某种方式干扰了开关上 slider 的状态。

谁能帮我解决这个问题?

最佳答案

实际上,我昨晚只是在与您相同的 slider 上执行此操作。

方法是

checked = ...; //boolean
$(slider).children("input").prop("checked",checked);

要检查 slider 开/关,使用

$(slider).children("input").is(":checked");

关于javascript - 如何使用 jquery 动态更改开关的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491024/

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