jQuery:检查函数中的'nodeType==3'
扩展——如何将关于检查jQuery:检查函数中的'nodeType==3',jquery,Jquery,扩展——如何将关于检查nodeType==3的答案转换为函数 函数hasText(元素){ element.contents().filter(函数(){ if(element.contents().nodeType==3){ 返回真值 } }); } $('p')。每个(函数(){ if(hasText($(this))){ $(this.css('border','5px纯蓝色'); } }); 你好 你好我建议: function hasOnlyText(element) { //
nodeType==3
的答案转换为函数
函数hasText(元素){
element.contents().filter(函数(){
if(element.contents().nodeType==3){
返回真值
}
});
}
$('p')。每个(函数(){
if(hasText($(this))){
$(this.css('border','5px纯蓝色');
}
});代码>
你好
你好
我建议:
function hasOnlyText(element) {
// checking if the number of contents of the element is equal to
// the number of contents that are textNodes:
return element.contents().length === element.contents().filter(function() {
return this.nodeType && this.nodeType === 3;
}).length;
}
函数hasOnlyText(元素){
返回element.contents().length==element.contents().filter(函数()){
返回this.nodeType&&this.nodeType==3;
}).长度;
}
$('p')。每个(函数(){
log(hasOnlyText($(this));
});代码>
你好
你好
您需要返回一个值。另外,Array.prototype.each
可能比filter
更合适
函数hasText(元素){
返回Array.prototype.every.call(element.contents(),function(c){
返回c.nodeType==3;
});
}
$('p')。每个(函数(){
if(hasText($(this))){
$(this.css('border','5px纯蓝色');
}
});代码>
你好
你好
很好——但请注意,像这样的例子也应该是正确的。你到底在测试什么?基本上,如果段落本身(不是它的任何潜在子段落)包含任何文本。更新了答案,我认为第二个片段应该是你正在寻找的?我会用我自己的,但那纯粹是因为我能更清楚地阅读自己的作品,从而理解它;您的解决方案可能更好,但我看不出您试图通过该实现解决的问题。您好,非常感谢!但是就像我刚才告诉David的那样,像“你好”这样的情况也应该返回true。@MarkBoulder:那么,试试一些
,而不是每个
。等等,这应该返回false,但不会:
@MarkBoulder:你确定结尾没有空格吗?(如果
没有关闭,它会关闭。)哦,是的!我犯了愚蠢的错误。你的也很好用。