【问题标题】:How to know which element called a function in Javascript?如何知道 Javascript 中哪个元素调用了函数?
【发布时间】:2010-12-18 01:18:20
【问题描述】:

我正在做这个页面,其中有很多图像链接,当鼠标悬停在它们上方时,它们会发生变化。我在这里有一个改变图像的功能:

    function hoverImg(element) {
        if (element.src.indexOf("_hover.png") == -1) {
            element.src = element.src.replace(".png","_hover.png");
        } else {
            element.src = element.src.replace("_hover.png",".png");
        }
    }

但是,我必须在每个元素的每个 onmouseover 和 onmouseout 事件上将“this”作为函数的参数。有没有办法只知道什么元素称为函数?函数复制不是一种选择,因为正如我所说,每页可能会有数百个这样的小图像,并且这些页面最终将由数据库数据生成。每次添加“this”似乎非常多余......

【问题讨论】:

    标签: javascript function element onmouseover onmouseout


    【解决方案1】:

    两个选项(以onclick为例):

    来自html:onclick="javascript:hoverImg(this)"

    或来自代码:x.onclick = hoverImgthis 现在在回调中设置好,因为它稍后会在 x 中“调用”对象)。

    还有一些“行为”JavaScript 库(甚至是 jQuery——甚至可能是 jQuery.live)可以帮助你得到你想要的。

    【讨论】:

    • jQuery 的 live() 正是我想要的——也许更多;现在我根本不需要为单独的元素定义事件,只需为某个类的元素定义一个方法就足够了。谢谢!
    【解决方案2】:

    在您的函数中尝试window.event.srcElement。这假定它是直接从事件处理程序调用的。

    【讨论】:

    • 不错。可以在 IE 中使用——但不确定 FF 是否会购买它(过去它不支持 window.eventIIRC)。
    • 是的,这只是 IE。现代浏览器使用来自传递给处理程序的事件参数的event.target。我已经很久没有在没有 jQuery 的情况下手动编写这样的事件了,我变得更笨了。
    • Chrome 没问题。
    猜你喜欢
    • 2018-07-23
    • 2011-03-21
    • 2012-04-18
    • 2021-05-19
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多