jQuery 在执行之前等待replaceWith 完成

标签 jquery replacewith

我用replaceWith批量替换了许多div中的html。替换后,我使用 jTruncate 来截断文本。然而它不起作用,因为在执行时,replaceWith 还没有完成。

我尝试了回调技巧 ( How do I extend jQuery's replaceWith function to accept a callback function? ),但没有成功。

有什么想法吗?

$(".hotel_info").each(function () {
    var div;
    div = $(this);
    div.replaceWith(data);
    truncInfo(div);
});

function truncInfo(div) {
    div.jTruncate({
        length: 100,
        minTrail: 100,
        moreText: '[more...]',
        lessText: '[less...]',
        ellipsisText: '...',
        moreAni: 'fast',
        lessAni: 'fast'
    });
}

最佳答案

好的,通过这篇文章找到了解决方案:jQuery replaceWith find new element

看起来替换后,该对象已从 DOM 中删除,因此创建了一个新对象。所以,我必须像这样更改代码:

$(".hotel_info").each(function () {
  var div;
  var div2;
  div = $(this);
  div2 = div.replaceWithPush(data);
  truncInfo(div2);
});

$.fn.replaceWithPush = function (a) {
  var $a = $(a);
  this.replaceWith($a);
  return $a;
};

感谢大家抽出时间!

关于jQuery 在执行之前等待replaceWith 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24429210/

相关文章:

jquery - jQuery 的 replaceWith() 和 html() 有什么区别?

javascript - Vanilla JavaScript 替换元素

javascript - 删除所有标签并创建一个包装内部 html javascript 的新元素

单击按钮之前激活 Javascript 函数

javascript - 获取 html 用户生成的输入不起作用

javascript - 如何在 JQuery 中自动调用加载函数?

javascript - 使用 javascript/jquery 应用上标/下标标签

jquery - 是否有一个 javascript(jQuery) 插件可以无缝隐藏/显示 flash swf?

javascript - jQuery 如何用同一个元素替换多个元素?