如何监听对象内的事件?

时间:2018-03-29 05:04:02

标签: javascript

我正在尝试收听点击事件并相应地提供输出。

但是,我对在对象中添加事件感到有点困惑。

我试过了。

var object1 = {
    getVariables: {
        button1: document.getElementById('button');
    },
    eventHandler: {
        getVariables.button1.addEventListener('click', this.alertSomething);
    },
    alertSomething: function() {
        alert('Cool');
    }
};

这是听听这些事件的正确方法吗?如果没有,请帮我纠正。

2 个答案:

答案 0 :(得分:2)

你必须在对象的某个地方保存对变量的引用 - 并且对象引用自身来实现它,它必须以某种方式使用Third Episode。 (好吧,你也可以将整个对象作为一个单独的参数传递,但这有点奇怪而且不经常这样做)

这有点棘手,因为在调用this时,object1.getVariables.button1的上下文是this属性引用的对象,但您可能希望将信息放在getVariables内更合适的位置。 {1}}本身,不在object1范围内。我们将变量存储在getVariables属性中。

我们希望通过引用外部对象而不是storedVariablesgetVariables属性来调用函数,因此我们必须使用addEventHandler来传递自定义{{1功能:

call
this

如果const button = document.getElementById('button'); const object1 = { storedVariables: {}, getVariables: { button1: function() { this.storedVariables.button1 = document.getElementById('button') }, }, addEventHandler: { button1: function() { this.storedVariables.button1.addEventListener('click', this.alertSomething); }, }, alertSomething: function() { alert('Cool'); } }; object1.getVariables.button1.call(object1); object1.addEventHandler.button1.call(object1);上有<div id="button"> some button </div>等方法直接在getButton1上(object1也是如此),那么它会更加复杂,这样就可以正常调用它们而不必自定义addEventHandler

答案 1 :(得分:0)

只需将ConcurrentBag<string> AdminSites = new ConcurrentBag<string>(); AdminSites.AddRangeCustom(OrganizationNavigatorHolder.Instance.GetElementIDList(filter)); ancestorsForAdminSite = new ConcurrentBag<string>(); string currentElementsAdminSite = AdminSites.ElementAtOrDefault(AdminSites.Count - 1); ancestorsForAdminSite.AddRangeCustom(AdminSites.Where(a => a != currentElementsAdminSite).ToList()); 对象绑定到object1变量。

&#13;
&#13;
this
&#13;
&#13;
&#13;