【问题标题】:Get event target from within Javascript module从 Javascript 模块中获取事件目标
【发布时间】:2013-04-26 11:34:09
【问题描述】:

我是第一次使用显示模块模式,并逐渐掌握它。

在我的 html 中有这样的内容:

<a href='#' onclick='myApp.doStuff'>Click here</a>

在 Javascript 中我有:

var myApp = (function () {

    var doStuff = function() {
        //Get clicked element and modify it with jQuery?
    }

    return {
        doStuff: doStuff
    }

})();

如何在上面指出的点获得被点击的元素?

【问题讨论】:

    标签: javascript dom-events revealing-module-pattern


    【解决方案1】:

    你可以使用 jQuery 方法,就像 alex23 说的那样。

    不过也可以用html写:

    <a href='#' onclick='myApp.doStuff(this)'>Click here</a>
    

    这适用于您的 javascript:

    var myApp = (function () {
    
        var doStuff = function(elem) {
            //use the element here
        }
    
        return {
            doStuff: doStuff
        }
    
    })();
    


    更新

    如果您也想传递事件对象,请将 onclick 中的调用扩展为:

    onclick='myApp.doStuff(this, event)'
    

    和 javascript 到:

    ...
    var doStuff = function(elem, event){
    ...
    }
    

    【讨论】:

    • 我更喜欢这个答案,因为它清楚地说明了您需要传入事件对象以及如何执行。
    • 谢谢,但它不是我在那里传递的事件对象,它是 a 元素本身。如果您也想传递事件对象,请编写:onclick='myApp.doStuff(this,event)'。然后你就可以访问a元素和事件对象了。
    • 哦,是的——我的错。谢谢。
    【解决方案2】:

    为此使用 jQuery 事件处理。跨浏览器事件处理在 JavaScript 中不是一件小事。

    假设你有:

    <a id="someLink" ..etc>Click here</a>
    $("#someLink").click(function(event) {
       $(this).html("I have been clicked");
    });
    

    【讨论】:

    • 你是说我不应该使用onclick还是你说我应该使用$(this)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2014-01-19
    相关资源
    最近更新 更多