Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当td在特定html标记后不包含任何内容时才隐藏tr_Javascript_Jquery - Fatal编程技术网

Javascript 仅当td在特定html标记后不包含任何内容时才隐藏tr

Javascript 仅当td在特定html标记后不包含任何内容时才隐藏tr,javascript,jquery,Javascript,Jquery,是否可以在html元素(br)之后检查tr中的内容以查看是否存在任何内容?如果br元素后面没有内容,我想隐藏父td。请注意,html代码是系统生成的,我无法编辑它 我只是不知道从哪里开始。非常感谢您的帮助 激光标签 拱廊 精选 弹跳屋(45分钟)$100 假的 聚会室租金(每小时)$75 真的 是的,您只需获取trs,然后确定第一个中的第一个元素是否有任何以下元素同级(我假设您不希望隐藏这些元素),或者任何以下文本节点同级不是空的。jQuery的内容非常方便,因为它包含文本节点。我可能会把

是否可以在html元素(br)之后检查tr中的内容以查看是否存在任何内容?如果br元素后面没有内容,我想隐藏父td。请注意,html代码是系统生成的,我无法编辑它

我只是不知道从哪里开始。非常感谢您的帮助


激光标签

拱廊
精选 弹跳屋(45分钟)$100
假的 聚会室租金(每小时)$75
真的
是的,您只需获取
tr
s,然后确定第一个
中的第一个

元素是否有任何以下元素同级(我假设您不希望隐藏这些元素),或者任何以下文本节点同级不是空的。jQuery的
内容
非常方便,因为它包含文本节点。我可能会把它们倒转过来:

$("#customfields .tabledefault tr").each(function(index) {
  var $tr = $(this);
  $tr.find("td:first").contents().get().reverse().some(function(node) {
    if (node.nodeName.toUpperCase() === "BR") {
      // Hide it, and we're done looping
      $tr.hide();
      return true;
    }
    if (node.nodeType != 3 || $.trim(node.nodeValue)) {
      // Don't hide it, and we're done looping
      return true;
    }
  });
});
我希望这可以优化,但你明白了

现场示例:

var计数器=3;
勾选();
函数tick(){
$(“#倒计时”).text(计数器--);
如果(计数器<0){
hideIt();
}否则{
设置超时(勾选500);
}
}
函数hideIt(){
$(“#customfields.tabledefault tr”)。每个(函数(索引){
var$tr=$(本);
$tr.find(“td:first”).contents().get().reverse().some(函数(节点){
if(node.nodeName.toUpperCase()=“BR”){
//把它藏起来,我们就完成了循环
$tr.hide();
返回true;
}
if(node.nodeType!=3 | |$.trim(node.nodeValue)){
//不要隐藏它,我们就完成了循环
返回true;
}
});
});
}

激光标签

拱廊
精选 弹跳屋(45分钟)$100
假的 聚会室租金(每小时)$75
真的
尝试使用
.each()
nextSibling
nodeValue
String.prototype.match(),
.closest()

$(“表tr td br”)。每个(函数(i,el){
//如果“br”下一个同级不包含字母数字字符,
//隐藏父'tr'元素
如果(el.nextSibling.nodeType==3
&&el.nextSibling.nodeValue.match(/\w+/)==null
||$(el).next(“:empty”).length){
$(this.closest(“tr”).hide()
}
})

激光标签

拱廊
精选 弹跳屋(45分钟)$100
假的 聚会室租金(每小时)$75
真的
我的意思是,如果td中br之后没有内容,我想隐藏父tr(而不是td)。您应该编辑您的问题(编辑按钮位于左下角)如果您将内容包装在它自己的元素中,而不是尝试在br之后检测文本,那么会简单得多。您能生成像xxx
这样的内容吗。我允许使用多个
br
元素,但问题中的HTML中确实没有任何元素。@t.J.Crowder“我允许使用多个br元素,但问题中的HTML中确实没有任何元素。”问题中的
br
元素似乎有多个
HTML
?将
.map()
替换为
.each()
;见更新后的帖子。我是指每行。此外,如果在
br
之后有一个元素,而不仅仅是文本,该怎么办?@T.J.Crowder“此外,如果在br之后有一个元素,而不仅仅是文本,该怎么办?”对于
br
之后有元素的情况,问题并不完全清楚,尽管元素内部没有内容;使用了
.next()
:空的
,但可能会使用
.nextAll()
。请参阅更新的PostInded,如同一
tr
中的多个
br
,这是我的防御编码。:-)(这是我的+1,顺便说一句)