jQuery clone( ) 在 IE7 上模拟阴影效果? (或者更好的想法)?

发布于 2024-12-28 14:49:38 字数 712 浏览 2 评论 0原文

有人可以帮我使用 jquery 的 clone() 函数吗?

有没有办法复制列表(但仅限顶级li)并将其附加到自身。我想让它看起来是实际列表的阴影,因为 IE7 不支持阴影。我确实尝试了一些插件,但没有一个能完美运行,所以我认为这可能是一个更好的方法。

例如。 我想生成以下但仅顶级的克隆

 <ul>
   <li>home</li>
   <li>about</li>
   <li>services
     <ul>
        <li>web</li>
        <li>grahpic</li>
     </ul>
   </li>
 <ul>

,以生成另一个没有子级别的列表。

 <ul>
   <li>home</li>
   <li>about</li>
   <li>services</li>
 <ul>

我尝试过,

$('ul li').clone().appendTo('ul li');   

但它提供了一个巨大的副本。

Can someone please help me with the jquery's clone() function?

Is there a way to duplicate a list (but only top level lis) and append it to itself. I want to make it look a shadow of the actual list because IE7 doesn't support shadows. I did try a few plug-ins but none worked perfectly, so I thought this might be a better way.

eg.
I want to generate a clone of the following but only top level

 <ul>
   <li>home</li>
   <li>about</li>
   <li>services
     <ul>
        <li>web</li>
        <li>grahpic</li>
     </ul>
   </li>
 <ul>

to generate another list without the sublevels.

 <ul>
   <li>home</li>
   <li>about</li>
   <li>services</li>
 <ul>

I tried

$('ul li').clone().appendTo('ul li');   

but it gives a huge copy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁的年少不轻狂 2025-01-04 14:49:38

http://jsfiddle.net/JUtkm/1/

我的解决方案(而不是尝试选择顶级LI,我使 成为必要的效果)。

HTML

<ul class="top">
   <li><span>home</span></li>
    <li><span>about</span></li>
    <li><span>services</span>
     <ul>
         <li>web</li>
        <li>grahpic</li>
     </ul>
   </li>
 <ul>

jQuery

$('ul>li').each(function(i, e){
    var cloned = $(e).find('span').clone();
    $(e).append( cloned.addClass('li-shadow') );
});

CSS

ul.top {position: relative;}
li {position: relative;}
li span {position: relative; z-index: 10; display: block; }
.li-shadow { color: rgb(130,130,130); position: absolute; top: 1px; left: 1px; z-index: 5; }

http://jsfiddle.net/JUtkm/1/

My solution (instead of trying to select top level LI's, I make <span> necessary for effect).

HTML

<ul class="top">
   <li><span>home</span></li>
    <li><span>about</span></li>
    <li><span>services</span>
     <ul>
         <li>web</li>
        <li>grahpic</li>
     </ul>
   </li>
 <ul>

jQuery

$('ul>li').each(function(i, e){
    var cloned = $(e).find('span').clone();
    $(e).append( cloned.addClass('li-shadow') );
});

CSS

ul.top {position: relative;}
li {position: relative;}
li span {position: relative; z-index: 10; display: block; }
.li-shadow { color: rgb(130,130,130); position: absolute; top: 1px; left: 1px; z-index: 5; }
泪痕残 2025-01-04 14:49:38

我不知道它将如何帮助您从中创建阴影。但我可以告诉你为什么你会收到一份拥抱副本。

ul li 选择器将选择 ul 下的所有 li 元素,并克隆每个元素并附加到 ul li 中将再次选择 ul 下的所有 li 元素。

您可以尝试使用此代码来仅克隆顶级项目。

$('ul:first > li').clone().each(function(){
    $(this).find('ul').remove(); 
}).appendTo('ul:first');

演示

I don't know how it is going to help you create a shadow out of it. But I can say why you are getting a hug copy.

ul li selector will select all the li elements under ul and clone each of them and append into ul li which will again select all the li elements under ul.

You can try this code to clone just the top level items.

$('ul:first > li').clone().each(function(){
    $(this).find('ul').remove(); 
}).appendTo('ul:first');

Demo

∝单色的世界 2025-01-04 14:49:38

我想说首先克隆当前列表,然后删除子列表

var clonedList = $('ul').clone()
clonedList.find('li ul').remove();

这应该会给你一个没有任何子列表的新列表,你可以将其附加到 DOM 中你想要的位置。我还没有测试过它,所以可能需要一些调整,但这个想法应该可行。

I'd say first clone your current list and then remove the sublists

var clonedList = $('ul').clone()
clonedList.find('li ul').remove();

This should give you a new list without any sublists which you can append to the DOM where you want it. I haven't tested it so it might need some tweaks but the idea should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文