【问题标题】:String replacing in a divdiv中的字符串替换
【发布时间】:2011-11-19 09:19:49
【问题描述】:

我想替换#TextArea1 中的特定字符串。单击按钮时会发生这种情况。

用下面的代码试了下,还是不行:

$('#TextArea1').text().replace("wef","--");

替换div中的单词的正确语法是什么?

【问题讨论】:

    标签: javascript jquery replace


    【解决方案1】:

    将一个函数传递给text()[docs] 方法,该方法返回您要设置的值:

    $('#TextArea1').text(function( i, txt ) { 
        return txt.replace("wef","--"); 
    });
    

    函数参数如下:

    • i是迭代中当前元素的索引
    • txt是当前元素的当前文本内容

    从函数返回的值将被设置为当前元素的新值。

    【讨论】:

      【解决方案2】:

      你很接近,试试这个:

      $('#TextArea1').text($('#TextArea1').text().replace(/wef/g,"--"));
      

      或者一个优化的

      var $textarea = $('#TextArea1');
      $textarea.text($textarea.text().replace(/wef/g,"--"));
      

      如果它是 textarea 元素,你会这样做:

      var $textarea = $('#TextArea1');
      $textarea.val($textarea.val().replace(/wef/g,"--"));
      

      【讨论】:

      • +1 用于替换所有实例,而其他答案仅替换第一个实例。不确定 OP 的目标是什么,但我认为这将是其中的一部分。
      【解决方案3】:

      您还设置了文本:

      var text = $('#TextArea1').text().replace("wef","--");
      $('#TextArea1').text(text);
      

      或者,使用函数:

      $('#TextArea1').text(function(index, text) {
        return text.replace("wef","--");
      });
      

      注意:如果这是<textarea>,请使用val() 而不是text()

      var text = $('#TextArea1').val().replace("wef","--");
      $('#TextArea1').val(text);
      

      【讨论】:

        【解决方案4】:

        replace() 创建一个新字符串并返回它,所以它会被归还到稀薄的空气中。您需要获取新字符串并将其发送回文本框。这个jsfiddle 展示了如何。

        <textarea id="t">
            hello
        </textarea>
        
        var text = $('#t').text();
        text = text.replace('h', 'b');
        $('#t').text(text);
        

        【讨论】:

        • 谢谢马特..这是最简单的方法,它非常适合我的小复杂代码。
        • Def 看看其他答案,他们提出了一些非常好的观点。
        • 这非常适合我的代码,尽管其他代码也有优点。您的代码需要一行,并且代码没有更改,这就是您的答案被接受的原因。我为每一个答案投票以表示感谢。
        猜你喜欢
        • 1970-01-01
        • 2011-12-08
        • 2012-04-26
        • 2016-08-18
        • 2011-12-17
        • 2020-03-08
        • 2011-07-02
        相关资源
        最近更新 更多