我得到了以下设置:
(function($) {
var text = $(".panel .panel-title a span").text();
var first_letter = text.charAt(0);
$(".panel-heading").attr('data-before', first_letter);
})(jQuery);
.panel-heading:before {
content: attr(data-before);
left: -25px;
top: 6px;
display: inline-block;
position: absolute;
height: 45px;
width: 47px;
z-index: 9999;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="panel">
<div class="panel-heading">
<p class="panel-title">
<a href="#aa1">
<span>Piece rate work</span>
</a>
</p>
</div>
</div>
<div class="panel">
<div class="panel-heading">
<p class="panel-title">
<a href="#aa1">
<span>Another Letter Here</span>
</a>
</p>
</div>
</div>
<div class="panel">
<div class="panel-heading">
<p class="panel-title">
<a href="#aa1">
<span>More Letters Here</span>
</a>
</p>
</div>
我想做的是在span元素中找到内容的第一个字母,在本例中是字母P。然后将这个字母转换为.panel-heading::before
伪元素的内容。
有几个.panel
div与第一个.panel
div有相同的兄弟元素。每个元素中的span元素包含不同的文本,因此第一个字母不同。所以它应该总是获取相关的(第一个)字母并将其放置在::before
内容中。
在@Michele De Falco的帮助下,我设法获取了第一个字母并将其放入伪内容中。但它总是获取第一个.panel
div的第一个字母并将其放在任何地方。
2条答案
按热度按时间nzkunb0c1#
我已经更新了你的jQuery使用
each()
,所以正确的父.panel-heading
得到正确的data-before
属性:zsohkypk2#
下面是jquery的示例,使用text()函数获取span标签的文本,然后使用charAt()函数获取第一个字符,最后我使用before()函数引用span.before标签
个字符