看起来这应该是非常容易的,但我还没有找到办法做到这一点;我想要做的是:
我有一些来自服务电话的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')才能找到位于该集合根目录的项目。