Javascript 如何选择元素中位于特定元素后面的所有内容?

Javascript 如何选择元素中位于特定元素后面的所有内容?,javascript,jquery,html,parsing,Javascript,Jquery,Html,Parsing,我的HTML结构如下: <tr> <td class="CT"> anything – <span class="cu"> <a href="#"></a> </span> – <span class="dt">content</span> </td> </tr> 那么,有什么解决办法吗 注意:我

我的HTML结构如下:

<tr>
   <td class="CT">
      anything –
      <span class="cu">
         <a href="#"></a>
      </span> – 
      <span class="dt">content</span>
   </td>
</tr>
那么,有什么解决办法吗

注意:我不能使用replace,因为有时for或a href的内容不同

你好,你好吗

任何事=和

实际上,我想把td.CT的所有内容都放在后面。实际上,它是编辑评论的内容,我想再次将其设置在文本区域进行编辑。

尝试使用contents.first.text就像评论中提到的@adeneo一样:

$'result'.text$.CT.contents.first.text.trim.replace/–$/; 任何东西- – 所容纳之物
Output这里有一种在节点之前提取任何内容的方法

查找td的所有内容 从jQuery集合转换为js数组 减少阵列,以便将最大到但不包括的所有节点推送到阵列上。 将节点数组包装为$以形成jQuery集合。 最后,将集合附加到某个DOM容器以使结果可见。 我肯定有更简单的方法,但我现在想不起来

演示:

例1: 例2: 例3: 这是我刚才说的更简单的方式:

var $myFragment = $(".CT").contents().filter(function(i, node) {
  return !$(node).prevAll().addBack().filter("span.cu").length;
});
演示:

这里有一些更一般的东西;一个jQuery插件.prevAllNodes,它:

在要查找节点之前的元素上操作。 接受要查找的节点类型或节点类型数组。不传递任何内容或[]以查找所有节点类型。 返回节点的jQuery集合。 使用方法如下:

var $commentsNodes = $(".CT span.cu").prevAllNodes([Node.COMMENT_NODE]); 

// $commentsNodes is a jQuery collection
// To read comments' text, you need to know to use the `.nodeValue` property. jQuery's $(commentNode).text() will not work.
演示:


$.fn.nextAllNodes将非常类似

以下是我解决此问题的方法。代码获取任意数量的节点,包括span.cu元素之前的注释和文本

为了演示,我将目标元素移动到了一个新的位置

var tdContents=$'td.CT'.contents; var cu=$'span.cu'; 变位; //获取span.cu元素的位置 tdContents.eachfunction i,el{ 如果el==cu[0]{ 铜位=i; } }; //清除span.cu和以下节点 var结果=tdContents.0,铜位置-1; //将有趣的内容放在另一个div中 结果。在“结果”后面加上; 任何东西- – 所容纳之物
所以,基本上你是在问如何使用jQuery来定位textNode。。。。。。复制或者不带jQuery-document.querySelector.CT.firstChild.textContent.Trim,或者带jQuery->$'.CT.contents.firstIt仍然是相同的$this.closest.CT.contents.get0.textContent。。。etcThanks,但我只想要任何东西,而不是任何东西–内容。不客气,检查我的更新,现在代码将返回任何东西。谢谢+1.但实际上我更新了我的问题。很抱歉在FirstThank中问得不好,但我测试了它,没有任何输出。你能不能给你的答案加上一句话?那只是一个简单的编码错误。再看一看-添加了到fiddles的链接。我花时间写了一些你可能会发现更有用的东西-一个通用的jQuery插件-。上面添加了prevAllNodes。
var $myFragment = $(".CT").contents().filter(function(i, node) {
  return !$(node).prevAll().addBack().filter("span.cu").length;
});
// *****************************************************
// A jQuery plugin to find DOM nodes of specified types 
// before the first element in a jQuery collection.
// *****************************************************
$.fn.prevAllNodes = function(types) {
    types = types || [];
    if(!$.isArray(types)) types = [types];
    var that = this.eq(0);
    var nodes = that.parent().contents().get().reduce(function(nodes, node) {
        nodes.stop = nodes.stop || (node == that.get(0));
        return nodes.stop ? nodes : nodes.concat(node);
    }, []).filter(function(node) {
        return types.length == 0 || $.inArray(node.nodeType, types) > -1;
    });
    return $(nodes);
}
var $commentsNodes = $(".CT span.cu").prevAllNodes([Node.COMMENT_NODE]); 

// $commentsNodes is a jQuery collection
// To read comments' text, you need to know to use the `.nodeValue` property. jQuery's $(commentNode).text() will not work.