悬停在 iframe 上时,如何在 iframe 外部的元素上触发 class?
when hovering on iframe, how do I trigger a class on element outside of iframe?
我有这个带有 iframe 的页面。我想在 iframe 之外的元素上触发悬停 class。它不是父包装器,它只是 iframe 外部 DOM 中的一个完全不同的 div。
html:
<body>
<div class="a6-expander-wrapper"></div>
<div class="some-other-div"></div>
<iframe title="My-Iframe" src="//example.com"></iframe>
</body>
CSS:
.a6-expander-wrapper-hover {
opacity: 1 !important;
}
.a6-expander-wrapper {
height: 44px;
width: 44px;
background-color:red;
opacity: 0;
}
我目前使用的jquery:
var $iframe = $('iframe[title="My-Iframe"]').contents();
var hoverItem = $('.a6-expander-wrapper');
$iframe.find('*').mouseover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
这是一个 plnkr:http://plnkr.co/edit/2WONkAijTzF2BBsh3p9H?p=preview
None 正如您可以从 plnkr 中看出的那样,它正在工作。我不知道该怎么办。让我知道你会如何解决这个问题。
如果我对你的理解是正确的,当用户将鼠标悬停在 iframe 上时,你想 运行 一些代码。
为此,您可以使用以下代码(当然是在将其添加到您的代码中之后):
$('iframe[title="My-Iframe"]').mouseover(function(){
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function(){
hoverItem.removeClass('a6-expander-wrapper-hover');
});
这应该是您所需要的。无需定位 iFrame 内容然后 select 里面的所有内容。您可以将鼠标悬停在 iFrame 本身上。
$(function () {
var iframe = $('iframe[title="My-Iframe"]');
var hoverItem = $('.a6-expander-wrapper');
$(iframe).mouseover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
});
如果不违反Same-origin_policy解决方案是:
$(function () {
var iframe = $('iframe[title="My-Iframe"]');
var hoverItem = $('.a6-expander-wrapper');
iframe.hover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}, function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
});
.a6-expander-wrapper-hover {
opacity: 1 !important;
}
.a6-expander-wrapper {
height: 44px;
width: 44px;
background-color:red;
opacity: 0;
}
iframe {
width: 500px;
height: 300px;
}
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<div class="a6-expander-wrapper"></div>
<div class="some-other-div"></div>
<iframe title="My-Iframe" src="xx.html"></iframe>
我有这个带有 iframe 的页面。我想在 iframe 之外的元素上触发悬停 class。它不是父包装器,它只是 iframe 外部 DOM 中的一个完全不同的 div。
html:
<body>
<div class="a6-expander-wrapper"></div>
<div class="some-other-div"></div>
<iframe title="My-Iframe" src="//example.com"></iframe>
</body>
CSS:
.a6-expander-wrapper-hover {
opacity: 1 !important;
}
.a6-expander-wrapper {
height: 44px;
width: 44px;
background-color:red;
opacity: 0;
}
我目前使用的jquery:
var $iframe = $('iframe[title="My-Iframe"]').contents();
var hoverItem = $('.a6-expander-wrapper');
$iframe.find('*').mouseover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
这是一个 plnkr:http://plnkr.co/edit/2WONkAijTzF2BBsh3p9H?p=preview
None 正如您可以从 plnkr 中看出的那样,它正在工作。我不知道该怎么办。让我知道你会如何解决这个问题。
如果我对你的理解是正确的,当用户将鼠标悬停在 iframe 上时,你想 运行 一些代码。
为此,您可以使用以下代码(当然是在将其添加到您的代码中之后):
$('iframe[title="My-Iframe"]').mouseover(function(){
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function(){
hoverItem.removeClass('a6-expander-wrapper-hover');
});
这应该是您所需要的。无需定位 iFrame 内容然后 select 里面的所有内容。您可以将鼠标悬停在 iFrame 本身上。
$(function () {
var iframe = $('iframe[title="My-Iframe"]');
var hoverItem = $('.a6-expander-wrapper');
$(iframe).mouseover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}).mouseout(function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
});
如果不违反Same-origin_policy解决方案是:
$(function () {
var iframe = $('iframe[title="My-Iframe"]');
var hoverItem = $('.a6-expander-wrapper');
iframe.hover(function () {
hoverItem.addClass('a6-expander-wrapper-hover');
}, function () {
hoverItem.removeClass('a6-expander-wrapper-hover');
});
});
.a6-expander-wrapper-hover {
opacity: 1 !important;
}
.a6-expander-wrapper {
height: 44px;
width: 44px;
background-color:red;
opacity: 0;
}
iframe {
width: 500px;
height: 300px;
}
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<div class="a6-expander-wrapper"></div>
<div class="some-other-div"></div>
<iframe title="My-Iframe" src="xx.html"></iframe>