我正在创建一个DOM元素的onfocus对象来处理各种后续事件。但是,在元素失去焦点之后,我需要以某种方式破坏对象,以便将来关注元素会创建一个没有引用原始对象的新对象。
现在,我遇到的这个问题是后续点击会创建另一个对象,并且所有函数都会被调用两次。再次点击,三次。等等。下面的代码显示了单击事件和对象创建的示例。
任何帮助都将不胜感激。
var videoTopicsHandler = DojoOn(videoTopicsInput, 'focus', function(e){
dropKeyPress(this, 'video-topics');
});
var dropKeyPress = function(input, ulId, scroll) {
var handler;
obj = new dropDownObj(ulId, scroll);
obj.attachEvents(obj, handler, input);
};
答案 0 :(得分:0)
试试这个:
var obj = null;
var dropKeyPress = function(input, ulId, scroll) {
var handler;
if(obj !== null) obj.destroyRecursively();
obj = new dropDownObj(ulId, scroll);
obj.attachEvents(obj, handler, input);
};
答案 1 :(得分:0)
您可能希望缓存已创建的对象,而不是删除,如果元素重新获得焦点,则可以从缓存中选择它们。优点:速度更快,无需在每次重新聚焦时再生物体并将其摧毁;缺点:未使用的对象将占用内存,但如果你要足够快地进入下一页,或者这些对象的数量很少,并且重新聚焦经常发生,那么你无论如何都需要它们,这可能无关紧要。