我需要将特定<li style="display:none;">
下的所有<ul id="bob">
移动到不同的<ul id="cat">
。在执行此移动时,我需要保留所有类,ID和CSS样式,并且显然也是内容。
答案 0 :(得分:4)
简单的单行:
$('#bob > li:hidden').appendTo('#cat');
将移动隐藏的所有ul#bob > li
,这是具有ul#bob > li
的{{1}}的超集,因为:
由于以下几个原因,可以将元素视为隐藏:
- 他们的CSS
style="display:none;"
值为display
。- 它们是
none
的表单元素。- 它们的宽度和高度明确设置为0.
- 隐藏了一个祖先元素,因此页面上不会显示该元素。
http://api.jquery.com/hidden-selector
如果您真的希望仅那些type="hidden"
属性为style
的元素,我会使用.filter()
并且正则表达式:
display: none;
regexp是case-和(大部分)空格不敏感的,并且允许分号是可选的,这是有效的CSS。如果你不关心其中任何一个,你可以像以前一样使用单线程进行git-r-dun:
var pattern = /^\s*display:\s*none\s*;?\s*$/gi;
$('#bob > li').filter(function ()
{
return pattern.test($(this).prop('style'));
}).appendTo('#cat');
答案 1 :(得分:0)
$('#cat').append($('#bob > li').filter(':hidden').remove());
答案 2 :(得分:0)
$('#bob li:hidden').remove().end().appendTo('#cat');