为什么我的委托事件处理程序不起作用?

时间:2016-08-15 08:01:02

标签: javascript jquery

我有一个id为Strike的按钮,但JQUERY事件似乎不起作用?此事件在此处有效,但仅在加载DOM时按钮存在。

dom.el('Strike').onclick = strikeSkill;

现在我动态生成了按钮,因此稍后会生成“Strike”按钮。因此上面的代码不再有效,因为Strike = Null

我正在使用Jquery .on函数,填充了我的参数,但现在当我点击“删除”按钮时,没有任何反应。没有攻击。为什么是这样?

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();
});

1 个答案:

答案 0 :(得分:3)

您当前的事件处理程序正在 #Strike中查找#Strike元素,这是不正确的(更不用说是无效的HTML)。

您可以通过为主选择器使用静态父元素来解决此问题:

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

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