题
从XBL方法中,当我需要调用另一种方法时,我确实喜欢:
<method name="myMethod_1">
<body>
<![CDATA[
// do staff
]]>
</body>
</method>
<method name="myMethod_2">
<body>
<![CDATA[
document.getElementById("thisElementID").myMethod_1();
]]>
</body>
</method>
我想知道是否有办法在不需要元素ID的情况下调用本地方法?我试过了 this.myMethod_1()
但是它说该方法不存在。
解决方案
您可以向我们展示调用myMethod_2的代码吗?如果您称其为:document.getElement(...)。mymethod_2(),那很好,但是如果您有somelement.addeventhandler之类的东西(“单击”,myxbl.mymethod_2,...);由于事件目标将是 这个.
这对于确定什么是重要的 这个 在这种情况下
编辑: (汤姆的答复)
哦,以为我明白了。这正是这个问题。.我是从另一个文档的按键听众来的,而“ this”不是我的想法。
其他提示
在事件侦听器的特定情况下,解决问题的另一种方法是将元素本身作为侦听器传递。当然,您只能获得一种句柄方法,因此,如果您在许多不同的事件目标上聆听许多不同的事件时,这将不太有用。
<implementation implements="nsIDOMEventListener">
<method name="handleEvent">
<parameter name="aEvent"/>
<body>
<![CDATA[
// do stuff
]]>
</body>
</method>
不隶属于 StackOverflow