Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery:检测css状态更改_Jquery_Css - Fatal编程技术网

JQuery:检测css状态更改

JQuery:检测css状态更改,jquery,css,Jquery,Css,我正在查看以下示例登录表单: 请注意,底部有一个“记住”精灵。本质上,在2状态映像下面有一个隐藏的复选框。单击图像时,图像将变为绿色复选框或滑至红色“x”。查看复选框的DOM状态时,该值不会更改(默认值为value=“1”)。如果我使用这个,我将使用什么JQuery来检测图像的状态变化,以便更改复选框的值 以下是HTML格式: <div id="logonForm"> <div id="box">

我正在查看以下示例登录表单:

请注意,底部有一个“记住”精灵。本质上,在2状态映像下面有一个隐藏的复选框。单击图像时,图像将变为绿色复选框或滑至红色“x”。查看复选框的DOM状态时,该值不会更改(默认值为value=“1”)。如果我使用这个,我将使用什么JQuery来检测图像的状态变化,以便更改复选框的值

以下是HTML格式:

        <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