Javascript 如何删除<;br>;然后呢?
如果我做了以下几点就可以了:Javascript 如何删除<;br>;然后呢?,javascript,jquery,Javascript,Jquery,如果我做了以下几点就可以了: <div id="results"> <p>Hello<br>there</p> </div> $($("#results p").children('br').get(0).nextSibling).remove(); 给我 未捕获的TypeError:无法读取未定义的属性“nextSibling” 这是因为.get(…)返回的是DOM元素,而不是jQuery对象。 在第一个示例中,您使用$(…)
<div id="results">
<p>Hello<br>there</p>
</div>
$($("#results p").children('br').get(0).nextSibling).remove();
给我
未捕获的TypeError:无法读取未定义的属性“nextSibling”
这是因为.get(…)
返回的是DOM元素,而不是jQuery对象。
在第一个示例中,您使用$(…)
将DOM元素转换为jQuery对象,但在第二个示例中您没有这样做
这将把DOM元素转换为jQuery元素并消除错误
var newLineRemove = $($(".infobox td").children('br').get(0).nextSibling);
但是它不会做你想让它做的事情,因为@Forty3说“这个
不在..信息框中”
这似乎可行,但我可能让事情变得更复杂了:
$(函数(){
var td=$(“.infobox”).next();
if(td.查找(“br”).长度){
$(td.contents().get().reverse()).each(function()){
$(this.remove();
如果(this.tagName==“BR”){
返回false;
}
});
}
})
你好
在吗
我有最简单的解决方案,试试这个:
$('td')。每个(函数(){
$(this.html($(this.html().split(“
”)[0]);
});代码>
li{
边缘底部:10px;
}
#usp-custom-3{
显示:无;
}
赫尔
那里
你好
那里
那里
您的代码不起作用,因为.infobox td“
选择器正在.infobox
元素中查找td元素,但在HTML中,td紧跟在.infobox
之后
如果您希望使用与现有JS非常相似的HTML(注意td和th元素需要位于表中的tr中),您可以这样做:
$($(“.infobox”).next().children(“br”)[0].nextSibling.remove()
你好
在吗
是因为
不在.infobox中,因此您的选择器$(“.infobox td”)
没有返回任何内容,因此您对的调用也不会返回任何内容。@Forty3您看到了错误,但我不会更改问题,因为有两个错误,一个是您提到的错误,另一个更好的解释是在下面的答案之一$($(“.infobox”).next(“td”).children(“br”)[0].nextSibling.remove()
@nnnnnn不,你有一个错误),所以删除额外的)
,这不是火箭科学(我已经编辑了我的评论)。你的提琴在那之后就不起作用了,因为你把TD和TH放在一张桌子外面,所以浏览器不把它们当作TD和TH——把它们放在一张有TR的桌子里,它就起作用了:我明白了,你能不能也提供一个编码解决方案,供将来参考,我会接受的,请?Thanks@rob.m什么是$wikiDOM
?它只是我定义的一个变量var wikiHTML=data.parse.text[“*”];var$wikiDOM=$(“”+wikiHTML+“”)代码>使用.eq()
而不是.get()
包装在$()
中会更整洁。另外,.nextSibling()
应该是.next()
。请参阅此提琴,并注意td不是您前面提到的infobox的子项,请注意,这将使用第一行的值覆盖所有行。(将第二行更改为“Hi”而不是“Hello”以了解我的意思。)您可以通过执行类似于$(“td”).html(函数(I,h){return h.split('
'))[0]}的操作来解决这个问题。
var newLineRemove = $($(".infobox td").children('br').get(0).nextSibling);