【问题标题】:Is there a way to apply jQuery to dynamically created elements? (not event listeners)有没有办法将 jQuery 应用于动态创建的元素? (不是事件监听器)
【发布时间】:2018-05-29 04:28:39
【问题描述】:

我已经动态创建了一个具有以下类的元素:

<span class="text">Hello</span>

和 jQuery:

function changeText() {
   var oldText = $(this).text();
    $(this).text(oldText + " There");
}

$(function() {
    $(".text").each(function(){
        changeText.apply(this);
    })
})

显然,这是实际发生的事情的简化版本,但基础知识就在那里。即使我们不使用事件监听器,是否可以将此规则应用于动态创建的元素?

这里的问题是这些“.text”元素没有特定的位置。我们知道这些会出现的唯一地方是身体。我在身体上使用了一个 mutationObserver……那不是很累吗?

【问题讨论】:

  • 最好的方法是改变负责创建这些动态元素的函数。
  • 能否更改负责创建动态元素的代码?
  • 很遗憾,不,这是使用过时的框架来执行此操作。
  • 动态元素是否只附加到一个父元素?还是有更多的父元素?
  • 我想如果可以将事件绑定持久化到动态创建的元素,那么 应该 也可以将 jQuery 应用于这些元素。

标签: javascript jquery dynamic element


【解决方案1】:

改为这样做:

function changeText() {
  var oldText = $(this).text();
  $(this).text(oldText + ' There');
}
$(function(){
$('.text').each(function(i, e){
  changeText.call(e);
});
});

【讨论】:

    【解决方案2】:

    这样

    $dynamicElement.find(".text").each(function(){
        changeText.apply(this);
    })
    

    【讨论】:

    • 我认为这不是 OP 所需要的。
    • find 方法在页面加载后仍继续寻找这些元素?
    • 看起来,没有。抱歉,这不是我要找的。有什么提示可以让我的问题更清楚吗?
    • 没有 find 方法在动态元素上查找。例如,如果您在页面加载后创建一个 div,则该 div 将是动态元素,并且 find 仅搜索该 div
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2016-02-27
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多