Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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:动态加载元素的大小/长度_Jquery_Dynamic - Fatal编程技术网

jQuery:动态加载元素的大小/长度

jQuery:动态加载元素的大小/长度,jquery,dynamic,Jquery,Dynamic,我有一个表单,并通过jQuery的load函数动态地向其中添加新的输入和选择元素。有时加载的元素是空的,在这种情况下,我想隐藏container div,这样它就不会破坏样式 问题是,我似乎无法计算加载的元素,因此不知道它是否应该隐藏 例如,我有: <div id="param_container"></div> 即使添加了新的children元素,子元素的长度始终为0 有什么想法吗 编辑: 我的解决方案 $('#param_container').load('/get

我有一个表单,并通过jQuery的load函数动态地向其中添加新的输入和选择元素。有时加载的元素是空的,在这种情况下,我想隐藏container div,这样它就不会破坏样式

问题是,我似乎无法计算加载的元素,因此不知道它是否应该隐藏

例如,我有:

<div id="param_container"></div>
即使添加了新的children元素,子元素的长度始终为0

有什么想法吗

编辑:

我的解决方案

$('#param_container').load('/get_params', {cat:category}, function(response) {
    if (response) {
        $('#param_container').css('display', 'block');
    } else {
        $('#param_container').css('display', 'none');
    }
});

您需要从div的id中删除,即

你写道:

<div id="#param_container"></div>
你需要:

<div id="param_container"></div>
当您在jQuery中编写$'param_container'时,它意味着您需要一个元素,其中id等于不带符号的字符串。因此,不需要将其包含在html代码中。

原因是调用是异步的,它在函数返回后完成

您可以使用成功回调,如下所示:

alert($('#param_container').children().length);

// Returns and loads new element correctly. Can be empty.
$('#param_container').load('/get_params', {cat:category}, function() {
    if ($('#param_container').children().length ) {
        $('#param_container').css('display', 'block');
    } else {
        $('#param_container').css('display', 'none');
    }

    alert($('#param_container').children().length);
});

您可以尝试使用LoadAPI完成回调

如果提供了完整的回调,则在执行后处理和HTML插入之后执行回调

$('#param_container').load('/get_params', {cat:category}, 
function() {
if ($('#param_container').children().length ) {
    $('#param_container').css('display', 'block');
} else {
    $('#param_container').css('display', 'none');
}
}
);

这是问题的一半,我不认为人们有任何必要否决它。不过,很明显,这只是OP修复的问题中的一个拼写错误,所以现在可能应该删除它。你+1000个互联网,其他人+500个互联网。我犯了同样的错误。我自己解决了这个问题:使用了.load的回调函数来检查响应。我最终得到了几乎相同的解决方案,尽管这样更好。谢谢@希鲁米:很高兴这有帮助@Seerumi:我应该在上面说过,可能值得查找元素一次并在变量中记住它,而不是每次都重新运行$param_容器。每次调用$,都会导致几个函数调用和内存分配。当然,浏览器最终会清理它们,但是。。。
$('#param_container').load('/get_params', {cat:category}, 
function() {
if ($('#param_container').children().length ) {
    $('#param_container').css('display', 'block');
} else {
    $('#param_container').css('display', 'none');
}
}
);