悬停时 jQuery 克隆迭代 div

发布于 2024-11-28 14:51:03 字数 1132 浏览 1 评论 0原文

我有一系列的 div,我想将它们克隆并在悬停到不同的 div 时显示/隐藏。尽管我已经弄清楚如何使用 jQuery 克隆一个或全部,但我对如何迭代地克隆每个组件仍然很困惑。

HTML,本质上是:

<div id="test">
  <div id="source1" class="src">content1</div>
  <div id="source2" class="src">content2</div>
  <div id="source3" class="src">content3</div>      
</div>

<div id="dest"></div>

我认为答案可能涉及一个 each 函数;然而,对于 jquery.min.js,以下脚本错误为“Function.prototype.apply 的第二个参数必须是一个数组”:

$(".src").hover(function() {
 $(".src").each(function() {
  $(this).clone().appendTo('#dest');
  return false;
  $('#dest').show();        
 }, function() {
  $('#dest').hide();
  $('#dest').html('');
 });
});

此位确实可以很好地克隆每个(不是每个).src div然而,悬停:

$('.src').hover(function() {
    $('.src').clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
}); 

所以,回顾一下,当我将鼠标悬停在每个 .src div 上时,我希望将每个 .src div 克隆到 #dest div,然后当我将鼠标移开时消失。然后下一个 .src div 应该在悬停时执行相同的操作,依此类推...无需为每个 sourceN div 编写单独的脚本。请各位聪明人,我做错了什么?

I have a series of divs that I want to clone and show/hide on hover to a different div. Although I've figured out how to clone one or all with jQuery, I'm quite stuck on how to clone each iteratively.

The HTML, essentially:

<div id="test">
  <div id="source1" class="src">content1</div>
  <div id="source2" class="src">content2</div>
  <div id="source3" class="src">content3</div>      
</div>

<div id="dest"></div>

I'm thinking the answer probably involves an each function; however the following script errors with "second argument to Function.prototype.apply must be an array" for jquery.min.js:

$(".src").hover(function() {
 $(".src").each(function() {
  $(this).clone().appendTo('#dest');
  return false;
  $('#dest').show();        
 }, function() {
  $('#dest').hide();
  $('#dest').html('');
 });
});

This bit does work nicely to clone every (not each) .src div on hover, however:

$('.src').hover(function() {
    $('.src').clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
}); 

So, to recap, I want each .src div to be cloned to the #dest div when I hover over it, then disappear when I mouse out. Then the next .src div should do the same thing on hover, and so on...without a separate script for each sourceN div. Please, oh wise ones, what am I doing wrong?

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

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

发布评论

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

评论(4

橘虞初梦 2024-12-05 14:51:03

您的假设是正确的,您需要使用 $(this) 符号。

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
});

Your assumption is correct, you need to make use of the $(this) notation.

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
});
无所谓啦 2024-12-05 14:51:03

克隆 div 时,不要使用类选择器 '.src',只需使用 this 并且它应该仅适用于悬停的 div

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
}); 

http://jsfiddle.net/tsb2A/

When cloning the div dont make a use the class selector '.src' just use this and it should work with only the hovered div

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html('');
}); 

http://jsfiddle.net/tsb2A/

美羊羊 2024-12-05 14:51:03
$('#test div').bind({
   mouseenter: function(){
       $('#dest').append($(this).clone());
   },
   mouseleave: function(){
       $('#dest #'+$(this).attr('id')).remove()
   }
});

可以吗?

$('#test div').bind({
   mouseenter: function(){
       $('#dest').append($(this).clone());
   },
   mouseleave: function(){
       $('#dest #'+$(this).attr('id')).remove()
   }
});

Is it ok?

不羁少年 2024-12-05 14:51:03

你试过这个吗?

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html(''); 
}); 

Have you tried this?

$('.src').hover(function() {
    $(this).clone().appendTo('#dest');
    $('#dest').show();
}, function() {
    $('#dest').hide();
    $('#dest').html(''); 
}); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文