如何将文本附加到分离的html

时间:2015-06-11 18:17:27

标签: jquery append

看起来这应该是非常容易的,但我还没有找到办法做到这一点;我想要做的是:

我有一些来自服务电话的HTML。标记中有标签,如p,strong等。我试图在将标记发送到页面之前将链接附加到最后一段(w angular)。我一直在使用jQuery来尝试获得我想要的标记,但到目前为止还没有金币。

我的代码看起来像这样:

var intro = row['Introduction']; // from the service call
var contents = jQuery(intro).contents().get(); // get the items within
for (var i = contents.length - 1; i > 0; i--) { // start with the last
  if (jQuery(contents[i]).context.nodeType === 3) { // is it text?
    jQuery('<a class="less">Less</a>').appendTo(contents[i]); // append
    break;
  }        
} 

但这似乎没有任何影响。当我在追加后调试.log(contents [i])时,它仍然是相同的。是什么给了什么?

为了澄清,我有这个html进入服务:

console.log(intro);
<p>This is text</p>
<p>This is more text.</p>
<p>And even more here.</p>

这就是:jQuery(介绍).find('p');获得0结果!

我错过了什么!?

另外,我不知道这是否相关,但是此代码是在AngularJS控制器中执行的。

为了进行理智检查,我在jsfiddle上尝试了这个(为了确保我没有去疯狂)https://jsfiddle.net/n094LL3s/显然,发现不能使用html字符串!... -_-

好的,我发现我需要使用$ .filter('p')才能找到位于该集合根目录的项目。

1 个答案:

答案 0 :(得分:0)

在您的情况下,而不是.find(),您需要使用$(text).filter('p').length这样的<div>。如果您仍想使用.filter(),则需要稍微修改HTML字符串并将其放在text = '<div><p>One</p><p>Two</p><p>Three</p></div>';元素(或任何其他容器)中,例如4

您可以在.find()方法说明

中找到此行为的原因
  

描述:获取当前集合中每个元素的后代   匹配的元素,由选择器,jQuery对象或元素过滤。

检查修改过的小提琴.find()