【问题标题】:jQuery - Replace Text / HTML for Dynamically created elements from external js filejQuery - 为从外部 js 文件动态创建的元素替换文本/HTML
【发布时间】:2016-04-12 16:38:58
【问题描述】:

如何替换 通过外部 .js 文件从 HTML 页面动态创建的元素的文本/html

例如:

我想将“Hello”文本替换为“Welcome”...我正在通过 external.js 文件执行此操作

$("h5").text("Welcome");

原始内容来自 HTML 页面以及动态创建的文本,我想用外部 .js 文件替换它

Online Demo

以下 HTML 和 index.html 中的代码

HTML

<div class="replaceMe"><h5>Hello</h5></div>
<a href="#" class="addNew">Add New</a>

HTML 页面内的脚本

$(document).ready(function(){

  $(".addNew").on("click", function(){
    $(".replaceMe").append('<h5>Hello</h5>');
  });

});

external.js

$(document).ready(function(){

  $(".replaceMe h5").text("Welcome");

});

【问题讨论】:

  • 您也只需要在click 事件中运行替换代码。
  • 你不能改变不存在的东西的内容,也没有办法委派它,你只需要等到元素实际存在才能改变它,并且作为在上面的评论中指出,这发生在点击处理程序中。
  • 嗨 @gpmcadam 感谢您的快速周转...我已经尝试过,如果代码来自同一页面,效果很好...但是,我想做与外部 js 文件相同,其中原始代码来自 HTML 页面(无法控制更改它)...我想从外部 js 文件替换此页面的所有
    内容..
  • 点击添加新锚点时是否要替换 hello 以表示欢迎?在你动态创建 div 的时候?
  • 是的 @shiva chauhan.. 但我想从外部 js 文件中执行此操作。从 index.html 页面创建动态内容的位置 :(

标签: jquery


【解决方案1】:

您可以替换文本特定的 h5 元素文本。

使用 ID

//Create Tag with "ID"
function appendTag(tag, id, text){
    try{
        $(".replaceMe").append('<'+tag+' id="'+id+'">'>'+text+''</'+tag+'>');
    }catch(e){
        console.log(e);
    }finally{
        tag = null;
        id = null;
        text = null;
    }
}

function replaceText(tag, id, text){
    try{
        //ID should be unique
        //$(tag+' #'+id).text(text);
        $('#'+id).text(text);
    }catch(e){
        console.log(e);
    }finally{
        tag = null;
        id = null;
        text = null;
    }
}

【讨论】:

    【解决方案2】:

    您必须将外部代码放在一个函数中,这样每次调用页面内的脚本时,您都可以调用它。 在 HTML 页面的脚本中调度事件。使用 document.addEventListener 在您的外部文件中捕获此事件。调用将“Hello”替换为“Welcome”的函数。

    或者更简单地说,只需在需要时在主脚本中调用外部函数。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多