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>
字段中的 Name
和 Email
文本,如下所示:
$('.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>
我有以下从 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>
字段中的 Name
和 Email
文本,如下所示:
$('.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>