简体   繁体   English

坚持一些Javascript - 在文本的鼠标悬停上显示图像

[英]Stuck on Some Javascript - Displaying Image on Mouseover of text

I'm trying to replicate the functionality of this page http://www.annedeckerarchitects.com/recognition/publications/ in a simpler way. 我试图以更简单的方式复制此页面的功能http://www.annedeckerarchitects.com/recognition/publications/ The functionality I'm referring to is mousing over on something on the right and changing the image on the left. 我所指的功能是将鼠标放在右边的东西上并改变左边的图像。

What I have; 我有的; https://jsfiddle.net/7j2zkndx/3/ https://jsfiddle.net/7j2zkndx/3/

html: HTML:

<img class="global-image" />
<div class="scrolling-list">
<ul>
    <li data-link="http://i.imgur.com/ne3L7hy.jpg">Link Test <a href="#">click for more</a></li>
    <li data-link="http://i.imgur.com/mwa1Wwl.jpg">Link Test 2 <a href="#">click for more</a></li>
</ul>
</div>

javascript; JavaScript的;

var globalImage = $(".global-image").first();
$(".scrolling-list>li").each(function() {
    var list = this;
    var img = document.CreateElement("img");
    img.src = $(list).getAttribute("data-link");
    img.addEventListener("load", function() {
        list.addEventListener("mouseOver", function() {
            globalImage.src = $(list).getAttribute("data-link");
        });
    });
}();

css; CSS;

.scrolling-list {
    width: 600px;
    height: 600px;
    overflow: scroll;
}
.global-image. .scrolling-list {
    display: inline-block;
}

I'm honestly at a loss why it isn't working. 老实说我不知道​​为什么它不起作用。 It would be best to assume I'm a novice in JS. 最好假设我是JS的新手。

Thanks. 谢谢。

globalImage is a jQuery collection. globalImage是一个jQuery集合。 globalImage.src won't change the src attribute of the element. globalImage.src不会更改元素的src属性。 Use jQuery's attr function to set it. 使用jQuery的attr函数来设置它。 Also, you need to be more careful with your capitalization. 此外,您需要更加小心您的大写。 mouseOver should be mouseover , CreateElement should be createElement . mouseOver应该是mouseoverCreateElement应该是createElement

$(".scrolling-list>li") only works if your <ul> is <ul class="scrolling-list"> . $(".scrolling-list>li")仅在<ul><ul class="scrolling-list">

Lastly, you can have issues if you assign img.src before adding the onload event handler. 最后,如果在添加onload事件处理程序之前分配img.src ,则可能会出现问题。 If the image is cached, it might finish loading before there is a handler, which means that your code won't execute at all. 如果图像被缓存,它可能会在有处理程序之前完成加载,这意味着您的代码根本不会执行。

Fiddle 小提琴

var globalImage = $(".global-image").first();
$(".scrolling-list>li").each(function() {
    var list = this;
    var img = document.createElement("img");

    img.addEventListener("load", function() {
        list.addEventListener("mouseover", function() {
            globalImage.attr("src", $(list).attr("data-link"));
        });
    });
    img.src = $(list).attr("data-link");
    console.log(img.src);
});

Another solution, if you want to bind : 另一种解决方案,如果你想绑定:

HTML : HTML:

<img class="global-image" />
<div>
    <ul class="scrolling-list">
        <li data-link="https://i.imgur.com/ne3L7hy.jpg">Link Test <a href="#" class="aToBind">click for more</a></li>
        <li data-link="https://i.imgur.com/mwa1Wwl.jpg">Link Test 2 <a href="#" class="aToBind">click for more</a></li>
    </ul>
</div>

Javascript : Javascript:

$("a.aToBind").mouseover(function(){
    let liParent = $(this).parent("li");
    $(".global-image").attr("src", $(liParent).attr("data-link"));
})

The class "aToBind" is only use to separate these "a" from other "a" in the rest of script. 类“aToBind”仅用于将这些“a”与其余脚本中的其他“a”分开。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM