我正在开发一个下拉菜单,需要使用JQuery改变现有的html标记,使其适合设计.
这是一个简化的例子:在div中包含所有"ul",其中包含多个"li"(在同一个div中,每个UL不包含一个div).
上面的代码给出了这个firebug错误:
"节点无法插入层次结构中的指定点"代码:"3"
我怎样才能使它工作?
这将是一个更清洁的方法:
$('ul:has(li)').wrap('');
首先,您不需要创建节点,只需将包装字符串提供给jQuery.其次,:has
在此实例中使用选择器来减少each
示例中的功能.最后,(这取决于您的预期功能)您可能想要使用wrap
而不是wrapAll
.
编辑:另一种选择是从相反的方式接近它.获取标签然后抓住
父母:
$('li:not(:only-child)').parent().filter('ul').wrap('');