是否可以从jquery中创建一个变量?我有以下代码,但它无法正常工作。
var container = $('#container');
if(container.is(':visible') == false) $(body).append('<div id="container"></div>'); // I console.log the result and it gives me false
container.append('<p>Test</p>'); // This doesn't append
答案 0 :(得分:3)
您遇到的问题是,只有在创建对象时才会计算选择器,因此当您执行最后一次追加时,container
仍然是一个空集合。
您应该重新分配变量:
var container = $('#container');
if(container.is(':visible') == false) {
$(body).append('<div id="container"></div>');
container = $('#container');
}
container.append('<p>Test</p>');
但如果你不做更多,没有理由缓存$('#container')
,计算速度很快。
答案 1 :(得分:1)
是的,但是在执行追加时需要更新变量。
您最好评估jQuery集合的长度,然后相应地分配一个变量:
var $container = $('#container');
if( !$container.length )
{
$container = $('<div id="container" />');
$container.appendTo('body');
}
$container.append('<p>Test</p>');
答案 2 :(得分:1)
container
可能不存在。
当你这样做时
var container = $('#container');
这并不意味着容器将始终指向具有容器ID的任何项目。相反,它会查找这样的容器,如果它不存在,则容器变量为“空”,即使您稍后创建了一个div。
您要做的是首先创建容器,然后创建变量,或者将正确的对象重新分配给变量。
额外提示,开发人员通常在{j}对象时使用$
前缀变量,这样他们就会记住他们不必再用$()
包装它们。