在同一元素上使用 jQuery 和 CSS 悬停状态
Using jQuery and CSS hover-states on the same element
我在分配给列表项的同一 class 上混合使用 jQuery 和 CSS 悬停状态。
jQuery 正在替换悬停时的文本。 CSS 隐藏 div 并在悬停时显示图像。
我的问题是 jQuery 悬停事件导致 CSS 悬停不起作用,我不太清楚为什么。
这是我在 CSS 悬停和 jQuery 悬停
上实现的列表项
<div class="list">
<ul class="projectList">
<li class="projectImage1"><a href="">Philomena Kwao<span><img src="helene images/philomena.jpg" alt="" height="580" width="370" /></span></a></li>
</div
这是 CSS 允许我隐藏部分并同时显示图像
.list:hover + section.container {
display: none;
}
这是替换悬停文本的 jQuery 悬停事件
// Text replace!
$('.projectImage1').hover(function() {
$(this).text("Article");
},
function() {
$(this).text("Philomena Kwao");
});
我也做了一个codepen来说明这个问题。
将鼠标悬停在第一个列表项上,然后将鼠标悬停在第二个列表项上以清楚地看到发生了什么。
您对 .text() 的调用破坏了列表项中包含的所有元素。改为这样做:在您的文本周围添加一个 span 并直接 select 它。
<div class="list">
<ul class="projectList">
<li class="projectImage1"><a href=""><span class="hover-text">Philomena Kwao</span><span><img src="helene images/philomena.jpg" alt="" height="580" width="370" /></span></a></li>
</div>
$('.projectImage1').hover(function() {
$('.projectImage1 hover-text').text("Article");
},
function() {
$('.projectImage1 hover-text').text("Philomena Kwao");
});
所以你实际上覆盖了 li 中的所有内容。
这是你悬停前的 HTML
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
<a href="#">Philomena Kwao
<span>
<img src="helene images/philomena.jpg" alt="" height="580" width="370" />
</span>
</a>
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
当您将鼠标悬停在 $('#projectImage1-hover').hover()
上时,您实际上是在重写 #projectImage1-hover
的内容。
悬停后看起来像这样:
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
Article
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
然后当你停止悬停时它看起来像这样:
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
Philomena Kwao
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
使用下面的代码,记下 <span class="name">Philomena Kwao</span>
,因为这是 javascript 将更改的内容。
您的 jQuery 的上下文在选择元素时很重要,尤其是因为您当前仅用文本替换 $('#projectImage1-hover')
的所有子项。
// Project hover animations
$(document).ready(function() {
// Text replace!
$('#projectImage1-hover').hover(function() {
// store $(this).text() in a variable
$(this).find('.name').text("Article");
},
function() {
// assign it back here
$(this).find('.name').text("Philomena Kwao");
});
});
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
<a href="#">
<span class="name">Philomena Kwao</span>
<span>
<img src="helene images/philomena.jpg" alt="" height="580" width="370" />
</span>
</a>
</li>
</ul>
</div>
这是 Philomena Kwao 正在使用的代码笔:https://codepen.io/anon/pen/KmBBLy
我在分配给列表项的同一 class 上混合使用 jQuery 和 CSS 悬停状态。
jQuery 正在替换悬停时的文本。 CSS 隐藏 div 并在悬停时显示图像。
我的问题是 jQuery 悬停事件导致 CSS 悬停不起作用,我不太清楚为什么。
这是我在 CSS 悬停和 jQuery 悬停
上实现的列表项 <div class="list">
<ul class="projectList">
<li class="projectImage1"><a href="">Philomena Kwao<span><img src="helene images/philomena.jpg" alt="" height="580" width="370" /></span></a></li>
</div
这是 CSS 允许我隐藏部分并同时显示图像
.list:hover + section.container {
display: none;
}
这是替换悬停文本的 jQuery 悬停事件
// Text replace!
$('.projectImage1').hover(function() {
$(this).text("Article");
},
function() {
$(this).text("Philomena Kwao");
});
我也做了一个codepen来说明这个问题。
将鼠标悬停在第一个列表项上,然后将鼠标悬停在第二个列表项上以清楚地看到发生了什么。
您对 .text() 的调用破坏了列表项中包含的所有元素。改为这样做:在您的文本周围添加一个 span 并直接 select 它。
<div class="list">
<ul class="projectList">
<li class="projectImage1"><a href=""><span class="hover-text">Philomena Kwao</span><span><img src="helene images/philomena.jpg" alt="" height="580" width="370" /></span></a></li>
</div>
$('.projectImage1').hover(function() {
$('.projectImage1 hover-text').text("Article");
},
function() {
$('.projectImage1 hover-text').text("Philomena Kwao");
});
所以你实际上覆盖了 li 中的所有内容。
这是你悬停前的 HTML
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
<a href="#">Philomena Kwao
<span>
<img src="helene images/philomena.jpg" alt="" height="580" width="370" />
</span>
</a>
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
当您将鼠标悬停在 $('#projectImage1-hover').hover()
上时,您实际上是在重写 #projectImage1-hover
的内容。
悬停后看起来像这样:
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
Article
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
然后当你停止悬停时它看起来像这样:
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
Philomena Kwao
</li>
<li class="projectImage2">
<a href="#">Jorja Smith
<span>
<img src="helene images/jorja.jpg" alt="" height="450" width="450" />
</span>
</a>
</li>
</ul>
</div>
使用下面的代码,记下 <span class="name">Philomena Kwao</span>
,因为这是 javascript 将更改的内容。
您的 jQuery 的上下文在选择元素时很重要,尤其是因为您当前仅用文本替换 $('#projectImage1-hover')
的所有子项。
// Project hover animations
$(document).ready(function() {
// Text replace!
$('#projectImage1-hover').hover(function() {
// store $(this).text() in a variable
$(this).find('.name').text("Article");
},
function() {
// assign it back here
$(this).find('.name').text("Philomena Kwao");
});
});
<div class="list">
<h2>Writing - </h2>
<ul class="projectList">
<li class="projectImage1" id="projectImage1-hover">
<a href="#">
<span class="name">Philomena Kwao</span>
<span>
<img src="helene images/philomena.jpg" alt="" height="580" width="370" />
</span>
</a>
</li>
</ul>
</div>
这是 Philomena Kwao 正在使用的代码笔:https://codepen.io/anon/pen/KmBBLy