使用jQuery在标记后隐藏文本

时间:2016-05-11 14:04:07

标签: javascript jquery css

我想在标记后隐藏某些文字。

我的HTML是:

<div class="listing_detail col-md-4"><strong>Living Room:</strong> Yes</div>
<div class="listing_detail col-md-4"><strong>Kitchen:</strong> No</div>

jQuery的:

$($('.listing_detail strong')[0].nextSibling).wrap('<span style="display:none"></style>');

上面的jQuery只删除第一个元素的文本,而不是两个。

如何修改它以便从两个元素中删除文本。

Fiddle

9 个答案:

答案 0 :(得分:4)

只需考虑通过each()函数循环遍历元素并隐藏每个<strong>元素的下一个兄弟:

// Loop through each strong element
$('.listing_detail strong').each(function(){
  // Find it's next sibling and wrap it
  $(this.nextSibling).wrap('<span style="display:none"></style>');
});

示例

$('.listing_detail strong').each(function(){
  $(this.nextSibling).wrap('<span style="display:none"></style>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="listing_detail col-md-4"><strong>Living Room:</strong> Yes</div>
<div class="listing_detail col-md-4"><strong>Kitchen:</strong> No</div>

答案 1 :(得分:3)

为什么不使用.each()并逐个隐藏?

$('.listing_detail strong').each( function(){
  $($(this)[0].nextSibling).wrap('<span style="display:none"></style>');
});

答案 2 :(得分:1)

为什么不简单

$('.listing_detail strong').hide();

答案 3 :(得分:0)

还添加此项以从第二个元素中删除文本:

$($('.listing_detail strong')[1].nextSibling).wrap('<span style="display:none"></style>');

所以它将是:

$($('.listing_detail strong')[0].nextSibling).wrap('<span style="display:none"></style>');
 $($('.listing_detail strong')[1].nextSibling).wrap('<span style="display:none"></style>');

答案 4 :(得分:0)

试试这个:

$($('.listing_detail strong')[0].nextSibling).wrap('<span style="display:none"></style>');
$($('.listing_detail strong')[1].nextSibling).wrap('<span style="display:none"></style>');

答案 5 :(得分:0)

我认为问题是$(&#39; .listing_detail strong&#39;)上的[0]选择器。使用类似于&#39; forEach&#39;的遍历方法代替。 https://jsfiddle.net/d4gyv6ed/12/

$('.listing_detail strong').each(function(index){
    $(this).siblings().wrap('<span style="display:none"></style>');
});

答案 6 :(得分:0)

如果你不需要索引,最好不要搞砸。 像这样更新您的标记:

<div class="listing_detail col-md-4"><strong>Living Room:</strong> 
    <div class="hide-this-tag">Yes</div>
</div>
<div class="listing_detail col-md-4"><strong>Kitchen:</strong> 
    <div class="hide-this-tag">No</div>
</div>

然后使用jQuery执行此操作:

$(".hide-this-tag').hide();

或者只是简单地使用css:

.hide-this-tag {
   display:none;
}

答案 7 :(得分:0)

如果您要查找的只是特定标记中的文本节点,则无论文本节点在标记内的位置如何,这种方法都是最有效的方法。

尝试使用.contents().filter()方法,this.nodeType == 3如下:

$('.listing_detail').contents().filter(function() {
    return this.nodeType == 3;
})
.wrap('<span style="display:none;"/>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="listing_detail col-md-4"><strong>Living Room:</strong> Yes</div>
<div class="listing_detail col-md-4"><strong>Kitchen:</strong> No</div>

答案 8 :(得分:0)

我要做的是创建一个具有隐藏属性的CSS类,并使用您的jQuery将它们添加到容器中。

这使您可以轻松地在将来添加和删除类。

这应该可以帮助你做到这一点

https://api.jquery.com/addclass/

要将它应用于多个div,请使用jquery中的每个函数

https://api.jquery.com/each/