从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()
,但它说该方法不存在。
答案 0 :(得分:1)
在事件监听器的特定情况下,还有另一种解决问题的方法,那就是将元素本身作为监听器传递。当然你只得到一个handleEvent方法,所以如果你在很多不同的事件目标上听很多不同的事件,这个方法就不那么有用了。
<implementation implements="nsIDOMEventListener">
<method name="handleEvent">
<parameter name="aEvent"/>
<body>
<![CDATA[
// do stuff
]]>
</body>
</method>
答案 1 :(得分:0)
你能告诉我们调用myMethod_2的代码吗?如果你这样称它为:document.getElement(...)。myMethod_2(),那很好,但如果你有像someElement.addEventHandler(“click”,myxbl.myMethod_2,...)这样的东西;这将无效,因为事件目标将是 this 。
这对于确定该上下文中 this 的内容非常重要
编辑:(汤姆的回复)
ow,我觉得我明白了......这正是问题所在......我是从另一个文件的按键监听器中调用它的,而“这个”并不是我想的......