gpt4 book ai didi

javascript - 在原型(prototype)中悬停子元素时失去对父元素的关注

转载 作者:行者123 更新时间:2023-11-29 18:37:40 25 4
gpt4 key购买 nike

我有一个 div,当我将鼠标悬停在它上面时,我有一个要设置动画的子 div(另一个 div),但是当我将鼠标悬停在子 div 上时,父 div 失去焦点并且子元素开始向后动画,就像我离开一样父分区。

这是我使用的代码:

$$(".slide .item").each(function (element) {
element.observe('mouseover', function (event) {
element.writeAttribute('doing_animation', 'true');
element.down('.meta').morph('margin: 103px 0 0;', {
duration: 0.25,
afterFinish: function (event) {
element.writeAttribute('doing_animation', 'false');
}
});
});
element.observe('mouseout', function (event) {
setTimeout(function () {
element.down('.meta').morph('margin: 169px 0 0;', {
duration: 0.25
});
}, 250);
});
});

这是标记:

<div class="item">
<div class="meta">
<h3><a href="#">Space Kitty Needz Moar Balls</a></h3>
<ul>
<li>From: <a href="#">Jeffdoe</a></li>
<li>Posted: 20 minutes ago</li>
<li>Views: 249,209</li>
</ul>
</div>
<img src="images/tmp/kitty.png" alt="" />
</div>

因此对于代码,我想将鼠标悬停在 .item.item .meta 上,而 .meta div 仍将控制焦点.item 部分。我知道 jQuery 在这方面做得更好,但我需要使用 Prototype。

谢谢!

最佳答案

这是我的做法:

$$(".slide .item").each(function (element) {
element.observe('mouseover', function (event) {
var relatedTarget = $(event.relatedTarget || event.fromElement);
var target = Event.element(event);
if ((target == element || Element.descendantOf(target, element))
&& !((relatedTarget == element) || Element.descendantOf(relatedTarget, element)))
{
element.writeAttribute('doing_animation', 'true');
element.down('.meta').morph('margin: 103px 0 0;', {
duration: 0.25,
afterFinish: function (event) {
element.writeAttribute('doing_animation', 'false');
}
});
}
});
element.observe('mouseout', function (event) {
var relatedTarget = $(event.relatedTarget || event.fromElement);
var target = Event.element(event);
if ((target == element || Element.descendantOf(target, element))
&& !((relatedTarget == element) || Element.descendantOf(relatedTarget, element)))
{
setTimeout(function () {
element.down('.meta').morph('margin: 169px 0 0;', {
duration: 0.25
});
}, 250);
}
});
});

你可以看到我刚刚添加了一个包装器

    var relatedTarget = $(event.relatedTarget || event.fromElement);
var target = Event.element(event);
if ((target == element || Element.descendantOf(target, element))
&& !((relatedTarget == element) || Element.descendantOf(relatedTarget, element)))
{
...
}

围绕您的事件处理程序。因此,只有当我们真正移入或移出父容器时,才将其视为“真正的”鼠标移入或鼠标移出。

希望对您有所帮助。

关于javascript - 在原型(prototype)中悬停子元素时失去对父元素的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com