Javascript 通过Jquery围绕特定内容注入代码
我和jQuery有点争吵。我试图在HTML页面上的一部分内容周围注入一个带有特定类的span 例如,这是我的html:Javascript 通过Jquery围绕特定内容注入代码,javascript,jquery,Javascript,Jquery,我和jQuery有点争吵。我试图在HTML页面上的一部分内容周围注入一个带有特定类的span 例如,这是我的html: <td class="">4 <a href="#">view</a></td> 4 我想要的是 <td class=""><span class="num_cell">4</span> <a href="#">view</a></td> 4 我觉得这
<td class="">4 <a href="#">view</a></td>
4
我想要的是
<td class=""><span class="num_cell">4</span> <a href="#">view</a></td>
4
我觉得这可能比我现在做的要容易——有人能帮忙吗?这也应该行得通:
$('td').each(function(){
$(this).contents().first().wrap("<span class='num_cell'>");
})
$('td')。每个(函数(){
$(this.contents().first().wrap(“”);
})
这也应该有效:
$('td').each(function(){
$(this).contents().first().wrap("<span class='num_cell'>");
})
$('td')。每个(函数(){
$(this.contents().first().wrap(“”);
})
如果您只想涵盖textNode,则应使用.contents()
,它还将textNodes作为项目返回
请查看文档,这里有一个例子可以准确回答您的问题
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
$(“p”).contents().filter(函数(){返回this.nodeType!=1;}).wrap(“”);
在你的评论之后,我认为你不需要一个循环,你能试试下面的代码吗
$("td").contents().filter(function(){ return this.previousSibling == null && this.nodeType != this.TEXT_NODE; }).wrap("<span/>");
$(“td”).contents().filter(函数(){返回this.previousSibling==null&&this.nodeType!=this.TEXT_NODE;});
this.previousSibling==null
如果要检查它是否是第一个元素,则表示它是第一个
干杯。如果您只想介绍textNode,您应该使用
.contents()
,它还将textNodes作为项目返回
请查看文档,这里有一个例子可以准确回答您的问题
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
$(“p”).contents().filter(函数(){返回this.nodeType!=1;}).wrap(“”);
在你的评论之后,我认为你不需要一个循环,你能试试下面的代码吗
$("td").contents().filter(function(){ return this.previousSibling == null && this.nodeType != this.TEXT_NODE; }).wrap("<span/>");
$(“td”).contents().filter(函数(){返回this.previousSibling==null&&this.nodeType!=this.TEXT_NODE;});
this.previousSibling==null
如果要检查它是否是第一个元素,则表示它是第一个
干杯。看看这个
$(文档).ready(函数(){
$(“td”)。每个(函数(){
var$div=$(本);
var$a=$div.find(“a”);
$div.find(a.remove();
var number=$div.html();
$div.html(“+number+”)。追加($a);
});
});
我使用一个div来运行它,这样它就可以在jsFiddle中运行了。但是您可以用a替换div,它应该可以正常工作:)
这是最终版本看看这个
$(文档).ready(函数(){
$(“td”)。每个(函数(){
var$div=$(本);
var$a=$div.find(“a”);
$div.find(a.remove();
var number=$div.html();
$div.html(“+number+”)。追加($a);
});
});
我使用一个div来运行它,这样它就可以在jsFiddle中运行了。但是您可以用a替换div,它应该可以正常工作:)
这是最终版本哇。。已经有很多答案了,这里有一个纯javascript的答案。。我在单元格中添加了一个ID以使其简单化,但您可以很容易地从那里获取该ID以使其通用 HTML
<td class="" id="targetCell">4 <a href="#">view</a></td>
JSFIDDLE:
哇。。已经有很多答案了,这里有一个纯javascript的答案。。我在单元格中添加了一个ID以使其简单化,但您可以很容易地从那里获取该ID以使其通用 HTML
<td class="" id="targetCell">4 <a href="#">view</a></td>
JSFIDDLE:
我一直在尝试将.html()和.wrap()结合起来,但似乎无法使其正常工作。有人有其他想法吗?我一直在尝试将.html()和.wrap()结合起来,但似乎无法实现。有人有其他想法吗?这是一个很好的解决方案,但它似乎在同一个类中多次包装了我的元素。事实上,随着时间的推移,我遇到了一些问题,你们的解决方案似乎完全解决了。谢谢你的帮助!这是一个很好的解决方案,但它似乎在同一个类中多次包装了我的元素。事实上,随着时间的推移,我遇到了一些问题,你们的解决方案似乎完全解决了。谢谢你的帮助!我把@rafek的每个循环都添加到这个循环中,它工作得非常好。谢谢你的帮助!我编辑了我的答案,我想你不需要使用额外的循环,让jQuery来处理这些事情。虽然这是一个很好的解决方案,但我遇到了一些问题,@rafek的解决方案似乎可以很好地解决这些问题。谢谢你的帮助!我把@rafek的每个循环都添加到这个循环中,它工作得非常好。谢谢你的帮助!我编辑了我的答案,我想你不需要使用额外的循环,让jQuery来处理这些事情。虽然这是一个很好的解决方案,但我遇到了一些问题,@rafek的解决方案似乎可以很好地解决这些问题。谢谢你的帮助!