首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的委托事件处理程序不能工作?

为什么我的委托事件处理程序不能工作?
EN

Stack Overflow用户
提问于 2016-08-15 08:01:01
回答 1查看 852关注 0票数 1

我有一个id为Strike的按钮,但JQUERY事件似乎不起作用?这里的事件以前起作用,但只有在DOM加载时按钮存在的情况下才能工作。

代码语言:javascript
复制
dom.el('Strike').onclick = strikeSkill;

现在我的按钮是动态生成的,所以“罢工”按钮将在稍后生成。所以上面的代码不再工作了,因为罢工= Null

我正在使用Jquery .on函数,填充了我的参数,但是现在当我单击“罢工”按钮时,什么都不会发生。没有攻击。为什么会这样呢?

代码语言:javascript
复制
function strikeSkill() {
    activeCheck();
    if (upgradeActive == true){
        radialSelector(strike);
    }   
    if (upgradeActive == false){
        HitCalc(player.cc, monster.cc);
        actor.expCounter(player.cc);
        actor.balanceCounter(player.cc, monster.cc);
    }
};

$('#Strike').on('click', '#Strike', function() {
    strikeSkill();
});
EN

回答 1

Stack Overflow用户

发布于 2016-08-15 08:05:29

当前的事件处理程序正在#Strike中查找一个#Strike元素,这是不正确的(更别提是无效的了)。

可以通过对主选择器使用静态父元素来修复此问题:

代码语言:javascript
复制
$(document).on('click', '#Strike', function(){
    strikeSkill();
});

在这个示例中,我使用了document,但是为了获得最好的性能,它应该是与#Strike最近的静态父元素,这在DOM加载时是可用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38951364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档