Hca*_*tek 32 collections jquery
为什么这不起作用?
var spans = $();
var elem = document.getElementById('someId');
spans.add(elem);
Run Code Online (Sandbox Code Playgroud)
从空集合开始并向其添加元素的正确方法是什么?我想遍历一组id并在页面上找到元素并将其添加到匹配的集合中.
azi*_*ani 49
引用jQuery网站:
给定一个表示一组DOM元素的
.add()jQuery对象,该方法从这些元素的并集和传递给方法的元素构造一个新的jQuery对象.
因此,当你这样做.add()时不会保存添加的元素,你必须显式地将元素分配给新创建的对象,即
var $elements = $('.elements');
$elements = $elements.add($('#anotherelement'));
Run Code Online (Sandbox Code Playgroud)
use*_*716 15
该.add()方法返回一个新的jQuery对象,因此您需要覆盖旧的jQuery对象:
spans = spans.add( elem );
Run Code Online (Sandbox Code Playgroud)
...或者因为您正在添加DOM元素,您可以使用修改现有的jQuery对象.push().
spans.push( elem );
Run Code Online (Sandbox Code Playgroud)
编辑:更改.pushStack()到.push(),虽然我不知道,如果不.push()被官方支持.
您可以使用.pushStack()添加集合.
spans = spans.pushStack( [elem] );
Run Code Online (Sandbox Code Playgroud)
要么
spans = spans.pushStack( document.getElementsByTagName('div') );
Run Code Online (Sandbox Code Playgroud)
我想我得不到你问的问题.如果您有一个元素,并且想要将其添加到集合中,则只需使用该.add()方法,就像您已经显示的那样.令人困惑的是,这会返回一个新的jQuery对象,所以你会这样做:
var spans = $();
var elem = document.getElementById('someId');
spans = spans.add(elem);
Run Code Online (Sandbox Code Playgroud)
当然,这样的事情会更短:
var spans = $();
spans = spans.add('#someId');
Run Code Online (Sandbox Code Playgroud)
当然,您不必从空对象开始.你只需要:
var spans = $('#someId');
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找push或add从 jQuery 对象中选择的项目,您也可以这样做:
var $els = $(),
$someEls = $(".some-els");
$els.push.apply($els, $someEls);
Run Code Online (Sandbox Code Playgroud)
只是另一种方式来做到这一点。
| 归档时间: |
|
| 查看次数: |
18799 次 |
| 最近记录: |