1

我有输入的表格。输入的答案和可见性可能会影响位于其下方的其他输入的可见性。

我有 javascript 函数,当某些输入的值发生变化时会调用该函数。该功能正在检查每个输入并检查其可见性和答案。根据该信息,它可能会隐藏或显示一些其他输入。一个循环就足够了,因为元素的可见性不会影响先前元素的可见性。

$(".test_this").each(function() {
    var id_number = $(this).attr("id").split("_")[1];
    var tested_id = parseInt(id_number) + 1;
    if ($(this).find("input:checked").val() != 1 || $(this).is(":hidden")) {
        if ($("#element_"+tested_id).is(":visible")) {
            $("#element_"+tested_id).hide();
        }
    }
    else {
        if ($("#element_"+tested_id).is(":hidden")) {
            $("#element_"+tested_id).show(500);   
        }                     
    }                  
});

我的代码运行良好,但我想为隐藏功能添加持续时间,但随后我的可见性检查失败。是否有可能知道某些元素是否已经开始隐藏但仍然可见?

我不想使用回调函数,因为它是在延迟之后执行的。其次,我不想更改隐藏输入的值。一种解决方案是添加一些可以检查存在的额外类,但是有没有更好的方法来做到这一点?

我在小提琴中的代码:http: //jsfiddle.net/nmUPj/3/

有关更多信息,我的实际代码要复杂得多,并且从 MySQL 获取有关表单的信息并使用 PHP 生成表单和 javascript 代码。

4

1 回答 1

1

您可以通过以下方式检查元素是否仍在动画:

$("#element_"+tested_id).is(":animated")

或者,你可以给你的 show() 一个回调函数,

$("#element_"+tested_id).show(5000, function(){
    alert('animation completed');
});
于 2012-12-09T12:22:07.853 回答