当我将鼠标悬停在链接上时,如何使用 jQuery 更改 div 背景?
当我将鼠标悬停在包含 div 中的链接上时,我需要能够更改该 div 中背景图像的位置。
这是页面:它是右中的两个蓝色播放按钮。
我以前可以使用它,但它坏了,我无法让它正常工作。
这是 html:
<div class="h-video">
<p><a class="play-video" href="#flashArea3">Secondary headline goes here to say something you want. This needs to grab their attention.</a></p>
</div>
这是 jQuery:
$(".h-video").hover(function() {
$(this).closest("div").css({ 'background-position': 'top center' });
}, function() {
$(this).closest("div").css({ 'background-position': 'bottom center' });
});
如果有任何帮助,我将不胜感激。
谢谢。
I need to be able change the position of a background image in a containing div when I mouse over a link within that div.
Here is the page: It is the two blue play buttons mid right.
I had it working before but it is broken and I can't get it to work properly.
Here is the html:
<div class="h-video">
<p><a class="play-video" href="#flashArea3">Secondary headline goes here to say something you want. This needs to grab their attention.</a></p>
</div>
Here is the jQuery:
$(".h-video").hover(function() {
$(this).closest("div").css({ 'background-position': 'top center' });
}, function() {
$(this).closest("div").css({ 'background-position': 'bottom center' });
});
I would appreciate any assistance.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为什么使用 JavaScript?您可以单独在 CSS 中执行此操作,但 IE6 不支持在
元素上执行此操作。
示例: http://jsfiddle.net/yr4yH/1/
< em>上面示例中的 CSS:
如果您需要支持 IE6,我相信您可以重新设计您的布局,使
.h-video
成为元素而不是
。
Why use javascript? You can do this in CSS alone, although IE6 won't support it on a
<div>
element.Example: http://jsfiddle.net/yr4yH/1/
CSS from example above:
If you need to support IE6, I'm sure you could rework your layout so
.h-video
is an<a>
element instead of a<div>
.一些注意事项:
你的位置颠倒了:“中心顶部”而不是“顶部中心”和“中心底部”而不是“底部中心”参考:http://www.w3schools.com/css/pr_background-position.asp
使用addClass和RemoveClass。不要内嵌设置样式。使用它就像 docs.jquery.com 上的示例一样。
如果您不需要 IE 支持,请使用不带 javascript 的 CSS 声明。
Couple of notes:
You have the positions reversed: "center top" not "top center" and "center bottom" not "bottom center" ref: http://www.w3schools.com/css/pr_background-position.asp
Use addClass and RemoveClass. Don't set styles in-line. Use it just like the example on docs.jquery.com.
If you don't need the IE support use CSS declaration w/o javascript.
我将为这个解决方案留下一个单独的答案,但我仍然想说 使用 CSS 而不是 javascript。
使用
.hover()
分配 then 处理程序的代码在元素加载之前运行。否则你的代码是正确的。下面的代码示例使用
$(function() { ... });
包装您的代码,这是 jQuery 的.ready()
方法,确保在代码运行之前加载文档。另外,这里不需要 jQuery 的
.closest()
方法,但也没有什么坏处。不妨将其删除。I'll leave a separate answer for this solution, but I'd still say to use CSS instead of javascript.
Your code that assigns then handlers with
.hover()
is running before the elements are loaded. Otherwise your code is correct.The code example below wraps your code with
$(function() { ... });
which is a shortcut for jQuery's.ready()
method, which ensures that the document is loaded before your code runs.Also, jQuery's
.closest()
method isn't necessary here, but it doesn't hurt either. Might as well remove it.