jQuery:*仅*隐藏来自 <label> 的文本

jQuery: Hiding *only* text from <label>

我有以下从 WordPress 插件输出的标记

<div class="emaillist">
    <form action="#" method="post">
        <div class="es-field-wrap">
            <label>Name*<br>
                <input type="text" name="name" placeholder="Name" value="" required="" class="form-control">
            </label>
        </div>
        <div class="es-field-wrap">
            <label>Email*<br>
            <input class="form-control" type="email" name="email" value="" placeholder="Email" required=""></label>
        </div>                              

        <input type="submit" name="submit" value="Subscribe">
    </form>
</div>

我正在尝试隐藏 <label> 字段中的 NameEmail 文本,如下所示:

$('.form-blog-notify label').text('')

但是当我这样做时,它会从 DOM 中删除 input 字段

有没有一种方法可以在保留文本字段的同时隐藏文本?

您需要获取第一个文本节点,然后将其删除。您可以在哪里使用 contents() 方法获取所有子节点,包括文本节点。

$('label').each(function() {
  $(this).contents().first().remove()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="emaillist">
  <form action="#" method="post">
    <div class="es-field-wrap">
      <label>Name*<br>
                <input type="text" name="name" placeholder="Name" value="" required="" class="form-control">
            </label>
    </div>
    <div class="es-field-wrap">
      <label>Email*<br>
            <input class="form-control" type="email" name="email" value="" placeholder="Email" required=""></label>
    </div>

    <input type="submit" name="submit" value="Subscribe">
  </form>
</div>

您可以将字体大小设置为0。现在文字不显示了,但还是会在HTML.

.es-field-wrap label {
  font-size: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="emaillist">
  <form action="#" method="post">
    <div class="es-field-wrap">
      <label>Name*<br><input type="text" name="name" placeholder="Name" value="" required="" class="form-control"></label>
    </div>
    <div class="es-field-wrap">
      <label>Email*<br><input class="form-control" type="email" name="email" value="" placeholder="Email" required=""></label>
    </div>
    <input type="submit" name="submit" value="Subscribe">
  </form>
</div>

如果要去掉文字,那么jQuery更好。

$(function() {
  $(".es-field-wrap label").each(function(i, el) {
    $(el).contents()[0].remove();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="emaillist">
  <form action="#" method="post">
    <div class="es-field-wrap">
      <label>Name*<br><input type="text" name="name" placeholder="Name" value="" required="" class="form-control"></label>
    </div>
    <div class="es-field-wrap">
      <label>Email*<br><input class="form-control" type="email" name="email" value="" placeholder="Email" required=""></label>
    </div>
    <input type="submit" name="submit" value="Subscribe">
  </form>
</div>