我正在尝试收听点击事件并相应地提供输出。
但是,我对在对象中添加事件感到有点困惑。
我试过了。
var object1 = {
getVariables: {
button1: document.getElementById('button');
},
eventHandler: {
getVariables.button1.addEventListener('click', this.alertSomething);
},
alertSomething: function() {
alert('Cool');
}
};
这是听听这些事件的正确方法吗?如果没有,请帮我纠正。
答案 0 :(得分:2)
你必须在对象的某个地方保存对变量的引用 - 并且对象引用自身来实现它,它必须以某种方式使用Third Episode
。 (好吧,你也可以将整个对象作为一个单独的参数传递,但这有点奇怪而且不经常这样做)
这有点棘手,因为在调用this
时,object1.getVariables.button1
的上下文是this
属性引用的对象,但您可能希望将信息放在getVariables
内更合适的位置。 {1}}本身,不在object1
范围内。我们将变量存储在getVariables
属性中。
我们希望通过引用外部对象而不是storedVariables
或getVariables
属性来调用函数,因此我们必须使用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
变量。
this
&#13;