将鼠标悬停在其他地方的文本替换为另一个 div 中的图像

Replace image in another div with text upon mouse over elsewhere

我已经尝试了十几种不同的方法来做到这一点,不过我只会post我最近的尝试。

基本上,我试图让它在用户将鼠标悬停在页面上的图像上时,单独 div 中的另一个图像被替换为文本。

我有用于替换文本元素的 JS 变量以及要替换的原始图像以将其放回原处。

我最近的尝试是:

function replaceMainPage(x) {
$('#logozone').empty();
$('#logozone').append(x);
}

function hoverCircles(y) {
$(this).hover(replaceMainPage(y), replaceMainPage(mainLogo));
}

我不太了解JS的"this"功能,但也尝试过该功能:

function hoverCircles(y) {
$('#logozone').hover(replaceMainPage(y), replaceMainPage(mainLogo));
}

从这里我尝试调用函数是我的主要 JS 文件,如下所示:

$("#cir1").hover(replaceMainPage(logoReplacements.cakes), replaceMainPage(mainLogo));

以及尝试在 html 中使用 onmouseover 在 img 元素本身上执行此操作。还没有任何效果。

我也对处理此问题的非 JS 方式持开放态度,但我也寻找了那些但找不到任何东西。

这对你有帮助,这里是jsFiddle:

var oldContent = '';
$('.hoverMe').hover(function() {
    oldContent = $('.toReplace').html();
    $('.toReplace').html('xxxxxxxx');
}, function() {
    $('.toReplace').html(oldContent);
});

HTML

<div class="hoverMe">
    HOVER ME
</div>
<div class="toReplace">
    <img src="//cdn2.hubspot.net/hub/360031/hubfs/feature_practicetest.jpg?t=1470774914678&width=365">
</div>

我创建了一个名为 oldContent 的全局变量。 hover.hoverMediv上的时候,存那个div的旧内容,把div的内容改一下,鼠标移出的时候,把返回旧内容。

更新

根据 OP 评论,我创建了另一个 jsFiddle,您可以在其中设置 .hoverMe

上的任何文本

如果有较长的文本,或者无法存储在数据属性中的文本类型,则将data-id="1"添加到n,并通过ajax检索文本在身份证上。

HTML

<div id="firstImgDiv">
  <div class="text"></div>
  <img src="a.png" onmouseenter="replaceImg('secondImgDiv', 'new Text')">
</div>
<div id="secondImgDiv">
  <div class="text"></div>
  <img src="b.png" onmouseenter="replaceImg('firstImgDiv', 'new Text')">
</div>

JS

function replaceImg(id, text){
  // show all images again
  $('img').show();
  // clear all text
  $('.text').html('');
  // hide target img
  $('#'+id+' > img').hide();
  // set target text
  $('#'+id+' > .text').html(text);
}