【问题标题】:jQuery event not working on dynamically loaded elementsjQuery事件不适用于动态加载的元素
【发布时间】:2014-03-10 14:33:56
【问题描述】:

我正在通过jQuery AJAX 加载一个id 为questionBeanPV.coAppQuestions150.answerText 的元素 我知道 id 太长并且包含 jQuery 的 '.' 但我无法更改 id。

我希望在单击此元素时调用一个函数。但是,以下代码不起作用。

$(document).ready(function(){       
    $('#questionBeanPV\\.coAppQuestions150\\.answerText').click(function(){
        alert('Hello !');
    });
});

我观察到这不适用于任何动态加载的元素。我错过了什么? 这是正确的方法还是有其他方法?

【问题讨论】:

  • 事件监听器应该附加到文档中,因此在附加监听器后创建的任何新元素都可以被认为是触发事件。

标签: jquery


【解决方案1】:

您可以在此处使用event delegation

$('body').on('click', '#questionBeanPV\\.coAppQuestions150\\.answerText', function() {
    alert('Hello !');
});

此技术将帮助您将任何事件附加到动态创建的元素。

【讨论】:

【解决方案2】:

你应该为此使用delegate

$(document).on("click","#questionBeanPV\\.coAppQuestions150\\.answerText",function(){
   //some operation
});

它可以帮助您为将来的元素附加处理程序

【讨论】:

    【解决方案3】:

    使用事件委托:

    $(document).on("click", "#questionBeanPV\\.coAppQuestions150\\.answerText", function() {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 2021-07-09
      • 2012-01-12
      • 1970-01-01
      相关资源
      最近更新 更多