JQuery:检测css状态更改
我正在查看以下示例登录表单: 请注意,底部有一个“记住”精灵。本质上,在2状态映像下面有一个隐藏的复选框。单击图像时,图像将变为绿色复选框或滑至红色“x”。查看复选框的DOM状态时,该值不会更改(默认值为value=“1”)。如果我使用这个,我将使用什么JQuery来检测图像的状态变化,以便更改复选框的值 以下是HTML格式:JQuery:检测css状态更改,jquery,css,Jquery,Css,我正在查看以下示例登录表单: 请注意,底部有一个“记住”精灵。本质上,在2状态映像下面有一个隐藏的复选框。单击图像时,图像将变为绿色复选框或滑至红色“x”。查看复选框的DOM状态时,该值不会更改(默认值为value=“1”)。如果我使用这个,我将使用什么JQuery来检测图像的状态变化,以便更改复选框的值 以下是HTML格式: <div id="logonForm"> <div id="box">
<div id="logonForm">
<div id="box">
<div class="elements">
<div class="avatar"></div>
<form action="" method="post">
<input type="text" id="un" name="username" class="username" placeholder="Username" />
<input type="password" id="pw" name="password" class="password" placeholder="•••••••••" />
<div class="checkbox">
<!-- here is the CHECK-BOX that I need to change value with JQuery -->
<input id="check" name="checkbox" type="checkbox" value="1" />
<label for="check">Remember?</label>
</div>
<div class="remember">Remember?</div>
<input type="button" id="login" name="submit" class="submit" value="Sign In" />
</form>
</div>
</div>
在dom中永远不会显示值更改复选框。根据发送表单后的操作,您只需在提交表单后检查值即可,例如,使用php
$\u POST['checkbox']
如果在发送表单之前必须知道值,可以执行以下操作:
$('#checkbox').attr('checked');
这可能是一个解决方案:
'use strict';
$(document).ready(function(){
var buffer = $('#yourDiv').css('height');
setInterval(function(){
var height = $('#yourDiv').css('height');
if (height != buffer) {
$('#yourDiv').html('The height changed from ' + height + ' to ' + buffer);
buffer = $('#yourDiv').css('height');
}
}, 100);
$('#yourDiv').click(function(){
$(this).css('height', (Math.random(1) * 501) + 'px');
});
});
检查这把小提琴:
这里实际发生的是我通常称之为匿名侦听器的事情
setInterval
只是在其内部继续执行lambda,并基于if
-语句,它将执行某些操作,或者根本不执行任何操作。这里的问题可能是“默认”缺少事件数据对象。如果您选择(如鼠标位置),则可以手动获取这些值
祝你好运 无论选中状态如何,复选框值都应保持为1。在经典形式中,选中状态决定是否发送值,而不是提交是否包含1或0。您要查找的可能是“checked”属性
设置选中的属性:
$('#check').attr('checked', true);
正在获取“已检查”状态:
据我所知,除了在无限循环中每隔一段时间进行检查外,没有什么简单的方法可以检查属性更改,但我很确定您不需要这样做。
单击标签应更改复选框“checked”属性。如果需要1或0值,而不是“1或无”,则可以侦听复选框“更改”事件并阻止取消检查,但如果值为1,则将值更改为0,反之亦然
$('#check').change(function(event){
event.PreventDefault();
$(this).val( ( $(this).val( ) + 1 ) % 2 );
});
但是,阻止更改也会取消基于checked属性的任何样式设置,因此必须以另一种方式引用checked状态:在css中使用
input[value=1] + label
或者您可以添加一小段代码来切换自定义类
$('#check').change(function(event){
event.PreventDefault();
$(this).val( ( $(this).val( ) + 1 ) % 2 );
$(this).toggleClass('checked');
});
并从css中引用如下内容:
input.checked + label
可能重复:我同意,但我不确定这样做的最佳实践。当处理图像状态变化时,尤其是在CSS中更常见的移动图像时,应该有一种方法将图像CSS的“位置”与复选框值链接起来。对我来说,通过jQuery获取该值很重要,因为我在发布表单之前正在执行一些AJAX,该值很重要。请参阅我的编辑,有一个简单的解决方案可以检测值的状态。通过执行以下操作可以获得布尔值true/false:$(“#复选框”)。is(“:checked”);谢谢大家。我犯了一个错误:查找要更改的值,而不查看“已检查”状态。我感谢你在这方面的帮助。我每天都学新东西。
$('#check').change(function(event){
event.PreventDefault();
$(this).val( ( $(this).val( ) + 1 ) % 2 );
$(this).toggleClass('checked');
});
input.checked + label