Javascript 如何安全地替换“之后的值”;运输署";标签?(在JQuery中)

Javascript 如何安全地替换“之后的值”;运输署";标签?(在JQuery中),javascript,jquery,Javascript,Jquery,在“td”标记内,如何在不删除整个“span”标记脚本的情况下替换“span”标记后的“BMW”单词?(在JQuery中) “BMW”一词是通配符。它可以是“福特”、“沃尔沃”等 我使用的是JQuery 2.0版 $('#'....).??? <td> <span column="17" style="cursor:pointer"></span> BMW </td> $('#'..)。??? 宝马 您可以使用,并且: 例如: $('ta

在“td”标记内,如何在不删除整个“span”标记脚本的情况下替换“span”标记后的“BMW”单词?(在JQuery中)

“BMW”一词是通配符。它可以是“福特”、“沃尔沃”等

我使用的是JQuery 2.0版

$('#'....).???

<td>
   <span column="17" style="cursor:pointer"></span> BMW
</td>
$('#'..)。???
宝马
您可以使用,并且:

例如:

$('table').find('td')
          .contents()
          .filter(function() {
              return this.nodeType === 3;
           })
           .replaceWith("hello world");
});

编辑:我忘记了第一次通话的结束括号

不确定如何标识列,因此可能需要更改选择器。这是一个直接的搜索和替换。你只想替换BMW这个词,对吗

// Example: $(table.cars td)
$('td').each(function()
{
    var repl = $(this).html().replace('BMW', 'Ford');
    $(this).html(repl);
});

如果文本节点是问题中的下一个同级节点,只需使用nextSibling即可:

$('span[column="17"]').get(0).nextSibling.nodeValue = 'Volvo';

试试这个。。。请注意,我忽略了任何属于空白的文本节点:

$("YOUR TD SELECTOR HERE")
    .contents()
    .filter(
        function() { 
            return this.nodeType == 3 && $(this).text().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
        }
    )
    .text('text to replace here');

我不知道任何好的jQuery解决方案,所以我提供了低级javaScript方法。很抱歉,但请相信这会有帮助

$("td").each(function(i,v){
  for (var i = 0;i < v.childNodes.length;i++){
    if (v.childNodes[i].constructor.name=="Text"){
      v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
    }
  }        
});
$(“td”)。每个(功能(i、v){
对于(var i=0;i
编辑:
它与小箱子不兼容,因此是更好的版本:

$("td").each(function(i,v){
  for (var i = 0;i < v.childNodes.length;i++){
    if (v.childNodes[i] instanceof Text){
      v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
    }
  }        
});
$(“td”)。每个(功能(i、v){
对于(var i=0;i

在这里,我将其付诸实践:

请看下面的问题和答案,了解您的答案:您是否成功地瞄准了该元素?如果没有周围的html,我们可能无法帮助您获得它。一旦确定目标,您就可以轻松地使用正则表达式删除第一个span标记之外的任何内容。是的,我已经成功地将“TD”元素定位为“$('#'+jqgridSpreadsheetId++'ghead'+jqGridGroup[x].idx.toString()+''+x.toString()”,它为我提供了“TD”元素中的全部值。如果make是Alpha Romeo,这会起作用吗?下一个节点将是文本节点,但alpha romeo 2是文本节点吗?@KaiQing-yup,这很好->get()在这里做什么?@isherwood-它将jQuery选择转换为本机DOM元素。@fletchsod-适用于任何地方?+1用于过滤空白。根据html的编写和/或缩小方式,这肯定需要考虑。但是.text似乎不起作用(replaceWith起作用),如果HTML是用多个换行符编写的,则会中断。