我有一个带有标题属性的图像列表和一个单独的名称列表。
鼠标悬停在图像上我想在名单上的列表项上切换css类。
因此我必须获取当前标题标签的值,并且必须在名单列表中搜索相应的文本。
<ul class="staff-photos">
<li class="standard">
<%= image_tag("footer/edith_hansmann.jpg", alt: "Edith Hansmann", title: "Edith Hansmann") %>
</li>
<li class="standard">
<%= image_tag("footer/christine_jean.jpg", alt: "Christine Jean", title: "Christine Jean") %>
</li>
</ul>
<ul class="staff-names">
<li><span class="hover-name">EDITH HANSMANN</span> | Head of Design</li>
<li><span class="hover-name">CHRISTINE JEAN</span> | Head of Marketing</li>
我的javascript:
// mouse hover on staff page image toggles CSS class of staff name list item
$('ul.staff-photos img').hover(function() {
var name = $(this).attr('title');
$('.hover-name').text().match(name).toggleClass('active');
});
我在比较相应的列表项时遇到了麻烦:
$('.hover-name').text()
"EDITH HANSMANNCHRISTINE JEAN"
如何实现相关列表项目的切换?
答案 0 :(得分:1)
问题在于match
周围的逻辑,因为您在单个字符串中获取了所有span
元素的文本,而不是单独比较它们。
您可以使用filter()
方法查找span
元素,其text()
元素与悬停的img
元素'title
属性相匹配,从而达到您的要求。试试这个:
$('ul.staff-photos img').hover(function() {
var name = $(this).attr('title').toLowerCase();
$('.hover-name').filter(function() {
return $(this).text().toLowerCase() == name;
}).toggleClass('active');
});
答案 1 :(得分:1)
您可以使用:contains
选择器执行此操作:
var name = $(this).attr('title').toUpperCase();
$('.hover-name:contains("'+ name +'")').toggleClass('active');
.hover-name
toggle
该类处于活动状态。