我有一个表单,我通过jQuery的加载函数动态添加新的输入和选择元素.有时加载的元素是空的,在这种情况下我想隐藏容器div,所以它不会破坏样式.
问题是,我似乎无法计算加载的元素,因此不知道它是否应该被隐藏.
例如我有这个:
<div id="param_container"></div>
Run Code Online (Sandbox Code Playgroud)
在一些下拉菜单更改我已绑定此功能:
alert($('#param_container').children().length);
// Returns and loads new element correctly. Can be empty.
$('#param_container').load('/get_params', {cat:category});
if ($('#param_container').children().length ) {
$('#param_container').css('display', 'block');
} else {
$('#param_container').css('display', 'none');
}
alert($('#param_container').children().length);
Run Code Online (Sandbox Code Playgroud)
即使添加了新的children元素,子节点的长度也始终为0.
有什么想法吗?
编辑:
我的解决方案
$('#param_container').load('/get_params', {cat:category}, function(response) {
if (response) {
$('#param_container').css('display', 'block');
} else {
$('#param_container').css('display', 'none');
}
});
Run Code Online (Sandbox Code Playgroud)
原因是load调用是异步的,它在函数返回后完成.
您可以使用成功回调,如下所示:
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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |