javascript - 为什么我的委托(delegate)事件处理程序不工作?

标签 javascript jquery

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

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

现在我的按钮是动态生成的,所以“Strike”按钮是稍后生成的。所以上面之前的代码不再有效,因为 Strike = Null

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

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

最佳答案

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

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

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

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

关于javascript - 为什么我的委托(delegate)事件处理程序不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951364/

相关文章:

jquery - 如何修复django-admin中的collapse.min.js中的 "Uncaught TypeError"?

javascript - 将返回数据中的文本动态添加到具有匹配 id 的 div 中

jquery - Twitter Bootstrap : How to see the state of a toggle button?

javascript - iPhone Mobile Safari 3 上的 getBoundingClientRect 等效于什么?

javascript - 可以动态分配 bPopup 触发器和目标 div 吗?

javascript - 如何在 Meteor js 中创建带幻灯片的产品 View

javascript - 如何使用 Django 在 algolia 搜索中使用多个属性。显示多个类(class)

javascript - 单击按钮时 mdl-layout__container 无限滚动

javascript - 我想验证用户只能在 ListView 的每一行中选择一个复选框

javascript - 如果整个 DOM 使用相同的 div,则仅将字符串附加到特定的 div 一次