【问题标题】:Search and Replace with variable using jquery使用 jquery 搜索和替换变量
【发布时间】:2014-10-10 11:39:31
【问题描述】:

我想搜索并替换一个包含不断变化的文本的整个字符串

示例:

<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="AZ">Azerbaijan</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrain</option>
<option value="BD">Bangladesh</option>

收件人:

Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh

问题当然是改变值...意思是 value="$var"... 如何使用 jquery / javascript 搜索和替换所有匹配项。

非常感谢您的帮助。

【问题讨论】:

  • 我不明白改变值是什么意思?
  • 您想从&lt;option&gt; 元素中检索文本?把它们放在哪里?
  • 这种情况下的chaning值是第一个选项:AU,第二个选项:AT等等。很容易使用string.replace for xxx一些字符串xxx。当我尝试替换 xx12x 一些字符串 xxx、xx23 一些字符串 xxx 等时,问题(对我来说)开始了(希望这可以清除它);) - 有时很难从远处解释这些事情。
  • p.s 我确实在示例代码下写了这个。

标签: javascript jquery search replace


【解决方案1】:

如果我没看错你的问题,那么你处理的是一个字符串,而不是元素,所以你可以使用String#replace:

theString = theString.replace(/<option[^>]*>([^<]+)<\/option>/g, "$1");

replace 在替换字符串中查找特殊序列,并根据匹配出现的信息填充它们。在这种情况下,我使用捕获组捕获&lt;option...&gt;&lt;/option&gt; 之间的位,然后使用$1 将整体匹配替换为第一个捕获组的内容。

完整示例:Live Copy *(我在它们之间添加了&lt;br&gt;,仅用于输出目的):

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Example</title>
</head>
<body>
<script>
  (function() {
    "use strict";

    var theString =
        '<option value="AU">Australia</option><br>' +
        '<option value="AT">Austria</option>' +
        '<br><option value="AZ">Azerbaijan</option>' +
        '<br><option value="BS">Bahamas</option>' +
        '<br><option value="BH">Bahrain</option>' +
        '<br><option value="BD">Bangladesh</option>';

    theString = theString.replace(/<option[^>]*>([^<]+)<\/option>/g, "$1");
    display(theString);

    function display(msg) {
      var p = document.createElement('p');
      p.innerHTML = String(msg);
      document.body.appendChild(p);
    }
  })();
</script>
</body>
</html>

【讨论】:

  • 我喜欢这个,比这里提供的其他解决方案灵活得多。测试... brb。
【解决方案2】:

您是否尝试过这种方法:

$('option').each(function() {
   var text = $(this).text();
   $(this).after(text);
   $(this).remove();
});

我现在无法测试它,但它应该可以完成这项工作。 告诉我进展如何。

你可以试试这个方法:

$('option').html(function(index, html)
    return html.replace(/<option[^>]*>([^<]+)<\/option>/g, "$1");
});

祝你好运!

【讨论】:

  • @SaiveSEO:当然,这会让您在包含option 元素的任何内容中直接留下文本,这可能是selectdatalistoptgroup,这些都不是我不认为应该在其中包含纯文本(不完全确定datalist 应该如何处理)... :-)
  • 这正是我所需要的——我确实在寻找可以变成灵活工具的东西,因为我非常需要这个功能并创建一个本地化页面,我可以使用它来更改具有变量的字符串 -为此,这很容易定制。非常感谢;)
【解决方案3】:

这应该可行:

$('select').children().each(function(i,el){
    $(el).val($(el).text());   
});

当然,这假设这是页面上唯一的选择元素。如果没有,您要么必须选择正确的,希望使用它的 id,或者,如果不是,则可能使用 eq()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多