为什么可以';一旦jQuery集合被用于包装另一个元素,我就不能访问它吗?
请看以下代码:为什么可以';一旦jQuery集合被用于包装另一个元素,我就不能访问它吗?,jquery,Jquery,请看以下代码: var b = $('<div id="b" />'); $('#a').wrap(b); b.css({ border: '5px solid red' }); var b=$(''); $('a')。包装(b); b、 css({边框:'5px实心红色'}); 存储在b下的元素将没有边框 在使用b包装另一个元素后,是否仍有办法访问它 或者我应该再做一次b=$('#b') var b=$('') $('a').wrap(b).css({border:'5px
var b = $('<div id="b" />');
$('#a').wrap(b);
b.css({ border: '5px solid red' });
var b=$('');
$('a')。包装(b);
b、 css({边框:'5px实心红色'});
存储在b
下的元素将没有边框
在使用b
包装另一个元素后,是否仍有办法访问它
或者我应该再做一次b=$('#b')
var b=$('')
$('a').wrap(b).css({border:'5px
实心红色“})
我不认为jQuery实际上使用了相同的“b”实例来包装它。您需要使用创建用于进行换行的“b”来覆盖“b”
var b = $('<div id="b" />');
b = $('#a').wrap(b).parent();
b.css({ border: '5px solid red' });
var b=$('');
b=$('#a').wrap(b.parent();
b、 css({边框:'5px实心红色'});
我想原因是,如果a
是一个类而不是一个ID,并且有几个类,那么就不能使用同一个元素单独包装每个.a
因此,它必须克隆用于包装的
b
。b包含内存中的元素,在DOM append之后,您在第二行将b发送到DOM,然后通过“b”引用的元素调用css()而不是通过DOM匹配。这将css样式添加到#a
中,b
不包含用于包装的元素。Alexander和RightSaidFred的代码从DOM中恢复b,并且这些代码可以工作。不,您的代码可以工作,因为第二行“b”从DOM接收元素“b”。然而,在第一行中,“b”指的是存储器。在内存中创建元素时,将其发送到DOM后,内存中元素的更改不会影响DOM。这就是真正的原因。@Gustavo:对“内存中”元素所做的更改将生效,无论该元素是否已添加到DOM中。。。对于wrap()
。注意,它只对每个元素调用wrapAll
。因此对于wrapAll()
,它将克隆用作包装器的元素。
var b = $('<div id="b" />');
b = $('#a').wrap(b).parent();
b.css({ border: '5px solid red' });