Javascript 如何使用jQuery获取DOM live集合?
如何从jQuery访问实时DOM集合 以这个HTMLJavascript 如何使用jQuery获取DOM live集合?,javascript,jquery,dom,Javascript,Jquery,Dom,如何从jQuery访问实时DOM集合 以这个HTML和这个JavaScript代码为例: var a = $('#a'); var divs = a[0].getElementsByTagName('DIV'); for(var i=0; divs.length < 20; ) { a.append($('<div>'+(i++)+'</div>')); } var a=$('a'); var divs=a[0]。getElementsByTagName(
和这个JavaScript代码为例:
var a = $('#a');
var divs = a[0].getElementsByTagName('DIV');
for(var i=0; divs.length < 20; ) {
a.append($('<div>'+(i++)+'</div>'));
}
var a=$('a');
var divs=a[0]。getElementsByTagName('DIV');
对于(变量i=0;divs.length<20;){
a、 追加($(''+(i++)+''));
}
它将向
添加20个div子项,因为divs
是一个实时集合
jQuery中是否有任何东西可以替换第二行以获得相同的结果
var divs=$('a div')代码>导致无限循环
JSFIDLE是。每次选择元素,这将创建一个新的jQuery对象。我认为这是元素变化的唯一方式
var a = $('#a');
for(var i=0; $('#a div').length < 20; ) {
a.append($('<div>'+(i++)+'</div>'));
if(i==50) break;
}
var a=$('a');
对于(变量i=0;$('a div')。长度<20;){
a、 追加($(''+(i++)+''));
如果(i==50)中断;
}
编辑:
或者这个:
for(var i=0,a=$('a');a.children('div')。长度<20;){
a、 追加($(''+(i++)+''));
如果(i==50)中断;
}
或者,只有一个选择器:
var a = $('#a');
var length = a.children('div').length;
while(length < 20) {
a.append($('<div>'+(length++)+'</div>'));
}
var a=$('a');
变量长度=a.children('div')。长度;
而(长度<20){
a、 追加($(''+(长度++)+''));
}
如何使用jQuery获取DOM live集合
那是不可能的
这与示例代码的效果相同,不过:
var $a = $('#a');
for (var i = 0; i < 20; i++) {
$a.append('<div>' + i + '</div>');
}
var$a=$('#a');
对于(变量i=0;i<20;i++){
$a.append(“”+i+“”);
}
更新:如果代码需要定期重复,您可以使用以下方法:
var $a = $('#a'),
toAdd = Math.max(20 - $('div', $a).length, 0),
i;
for (i = 0; i < toAdd; i++) {
$a.append('<div>' + i + '</div>');
}
var$a=$('#a'),
toAdd=数学最大值(20-$('div',$a).length,0),
我
对于(i=0;i
总是20个div儿童吗
使用以下命令不是更好吗
var a = $('#a div');
for(var i=0; i < 20; i++) {
a.append($('<div>'+(i)+'</div>'));
}
var a=$('a div');
对于(变量i=0;i<20;i++){
a、 追加($(''+(i)+'');
}
如果#a
已经包含div:
var $a = $('#a'),
toAdd = Math.max(20 - $a.find('div').length, 0);
for (var i = 0; i < toAdd; i++) {
$a.append('<div>' + i + '</div>');
}
var$a=$('#a'),
toAdd=数学最大值(20-$a.find('div')。长度,0);
对于(变量i=0;i
这相当于上面的代码。您要查找的语法是:
var divs = $('div#a');
由于ID应该是唯一的,因此您可以执行以下操作:
var divs = $('#a');
实时集合——真正的集合,不是现代jquery可以返回的。
此外,打算在最近的将来替换getElementsByTagName的现代方法getQuerySelector也会返回一个静态集合
这就是你所说问题的答案。
至于您真正想问的问题,其他用户已经尝试为您提供一些帮助 但这将执行20次“#a div”选择器循环多少次?这是否会影响性能是值得怀疑的。请更改为一段时间并在循环之前计数?更新后的answer.20只是一个例子,编码时不知道实际的数字-它将取决于运行时已经存在的div子级的数量。该循环需要定期执行,以确保最多有20个div子级,所以20不能算作需要的循环数。那么你是说使用live Collection是一种糟糕的风格吗?好吧,bad这个词太强了。我更愿意说,在依赖集合的活性属性时应该非常小心,因为它不仅不太明显,而且对技术也不太了解。嗯,经过思考,可能是“坏的”是非常合适的)是的,这是最接近我需要的,如果在循环@ʘleg时其他东西没有添加另一个div:因为JavaScript是单线程的,这应该不是问题。
var divs = $('#a');