jQuery - 更改表单中的部分内容

时间:2010-08-19 17:01:38

标签: jquery replace

刚开始使用jQuery,这个问题对我来说似乎是不可能的。 搜索所有论坛,没有运气。也许你们可以帮助我?

我的HTML看起来有点像这样:

<form>
   <table class="tableClassName"> 
     [content]
   </table>
   <div class="divClassName"> 
     [content]
   </div>
Here is some text
   <div class="divClassName"> 
     [content]
   </div>
</form>

表单中有一些子元素。我只想把文本“在这里我发短信”,而不是其他东西。 有什么方法可以留下所有的子元素,只改变这个特定的文本吗?

到目前为止,这是我的菜鸟代码:

$(document).ready(function() {
var oldText = "Here is some text";
var newText = "the new text";
var entireElement = $("form:contains(" + oldText + "):not(table, div)").html();
$("form:contains(" + oldText + "):not(table, div)").html(entireElement+newText); 
});

正如你所看到的,这不会取代任何东西。它只会将我的新文本放在</form>之前。 怎么办?

3 个答案:

答案 0 :(得分:0)

让事情变得更简单。 使用ID!;)

新的HTML代码

<form>
    <table class="tableClassName">[content]</table>
    <div class="divClassName">[content]</div>
    <span id="form_text">Here is some text</span>
</form>

新的Javascript代码

$(document).ready(function() {
    var newText = "the new text";
    $('#form_text').html(newText); 
});

答案 1 :(得分:0)

试一试:

$(document).ready(function() { 

  var oldText = "Here is some text"; 
  var newText = "the new text"; 
  var newHtml = $("form:contains(" + oldText + "):not(table, div)").html().replace(oldText,newText);
  $("form:contains(" + oldText + "):not(table, div)").html(newHtml);  

}); 

P.S。这绝对不是实现它的最佳方式。

答案 2 :(得分:0)

如果你不知道你的文本节点在容器中的位置,你可能会做这样的事情,即循环遍历所有这些节点,直到你得到一个匹配:

​$("form").contents().each(function() {
    if(this.nodeType == 3) {
        if($.trim(this.nodeValue) == 'Here is some text') {
            this.nodeValue = 'New text';   
        }
    }
});​​​​​

演示:http://jsfiddle.net/8yAbu/