我正在尝试克隆一个li
及其子级,然后将其附加到另一个div
。我的问题是,我似乎只能在li
标记中获取锚标记,而不是实际的li
结构。我正在使用contains
找到要克隆的正确li
。我知道首先使用的是错误的功能,但我需要做的是让之前的li
及其子项找到currentCategory
。我创建了JSfiddle以更清楚地显示http://jsfiddle.net/2EE2J/
$(document).ready(function () {
var currentCategory = $(".Breadcrumb ul li:last").text();
$(".SideCategoryListFlyout li a:contains('" + currentCategory + "')").first().clone().appendTo("#test");
});
我得到了这个:
<a href="link">link</a>
<a href="link">link</a>
<a href="link">link</a>
我想要这个:
<ul>
<li class=""><a class="sf-with-ul" href="">Belts<span class="sf-sub-indicator"> »</span></a><ul style="visibility: hidden; display: none;">
<li><a href="">Casual Belts</a></li>
<li><a href="">Jean Belts</a></li>
</ul>
答案 0 :(得分:1)
好的,我们这里(在这里分叉小提琴:http://jsfiddle.net/mori57/QBmUZ/)
主要的问题是你真的选择了碰巧是li的子项的标签......所以选择器将返回一个标签数组,而不是它们的父标签。
所以,我们需要一个li标签选择器......让我们从那里开始:
var arrLI = $(".SideCategoryListFlyout li");
我们知道会为你提供一系列LI标签......但我们如何过滤它以便它只包含具有你想要的标签的li?介绍.has()方法! (API文档:http://api.jquery.com/has/)
var arrLI = $(".SideCategoryListFlyout li").has("a:contains('" + currentCategory + "')");
在这里,我们只是拿你的li数组,并检查它们是否有你想要的内容。
顺便说一句,我知道人们喜欢链接,因为它很酷,而且具有“哇哇哇哇哇”的因素。但是,您必须记住,每次将选择器放入链中时,都会强制jQuery重新分析DOM树以查找新的选择器。你正在缩小范围,但不是很多,并且强制进行大量的重新分析。此外,所有这些链接使调试成为一个真正的熊,并使你更难理解你的代码。现在,其他比我更聪明的人可以告诉你性能差异是什么,但我真诚地建议你只链接绝对必要的地方,尽可能经常地缓存对象,并将你的代码分解成容易阅读和易读的块。