【问题标题】:jquery find and replace text, without element idjquery查找和替换文本,没有元素id
【发布时间】:2010-02-27 22:15:11
【问题描述】:

我正在寻找和替换文本。

我遇到的唯一问题是找到一个文本字符串,它没有附加到具有 ID 的元素。否则就很容易了。

我正在尝试这样的事情:

$("*").each(function () {
    $(this).html(this.html().replace('Original Text','New Text'));
});

效果不太好。
有人遇到过这种情况吗?

另外,如果我有多个单词或短语要查找和替换,这对用户浏览器的速度/处理能力有何影响?是不是很占内存?

【问题讨论】:

    标签: jquery find replace


    【解决方案1】:
    $("*").contents().each(function() {
        if(this.nodeType == 3)
            this.nodeValue = this.nodeValue.replace("old", "new");
    });
    

    【讨论】:

      【解决方案2】:

      Takpar,您的代码也有效。它似乎阻止了其他一些事情的工作,但只有我正在动态拉动的项目。例如,当我使用.ajax() 时。不知道为什么,但这就是我遇到的原因。我会测试更多。

      在一个相关主题上,Gumbo 的代码有效:

      $("*").each(function () {
          if ($(this).children().length == 0) {
              $(this).text($(this).text().replace('Subject:','Name:'));
          }
      });
      

      我遇到的唯一问题是替换页面加载后加载的文本。

      我确实有一些 javascript 函数显示来自服务器的数据,但仅在页面加载了所有元素之后。例如,用户从下拉列表中选择一个值,该值启动一个事件以从数据库中加载产品列表。

      我像这样格式化其中一些产品:

      Granny Smith Apples
      Price: x.xx per pound
      Nutritional facts....
      

      我只想找到一个替换词“价格:”,并可能将其替换为“成本:”。

      但正如我所提到的,该数据尚未加载。

      是我必须忍受的限制吗?

      【讨论】:

      • 这在现代浏览器中运行良好我通过 JS Lint 传递了它,它说你缺少一个 = 等号,所以我添加了它。我怎样才能使它与 IE8 -IE7 兼容? @coffeemonitor @jellybelly
      【解决方案3】:

      你为什么不简单地使用:

      $('body').html($('body').html().replace('Original Text','New Text'));
      

      【讨论】:

        【解决方案4】:

        您需要:contains() 选择器。 http://api.jquery.com/contains-selector/

        $("*:contains('Original Text')").each(...);
        

        【讨论】:

        • :contains 不是一个好主意:“匹配的文本可以直接出现在选定的元素中,在该元素的任何后代中,或它们的组合中。”
        • 仅当您不想在后代中替换它时才为真。
        • 意思,replace 方法是要进行替换,而不是选择器。
        【解决方案5】:
        $("*").each(function () { 
        if ($(this).children().length == 0){ 
             $(this).html($(this).html().replace(/Old String/g, "New String"));
        }});
        

        【讨论】:

          猜你喜欢
          • 2013-08-14
          • 2021-10-25
          • 2020-08-23
          • 1970-01-01
          • 2011-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-21
          相关资源
          最近更新 更多