当我将鼠标悬停在链接上时,如何使用 jQuery 更改 div 背景?

发布于 2024-09-26 19:55:57 字数 731 浏览 2 评论 0原文

当我将鼠标悬停在包含 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原谅过去的我 2024-10-03 19:55:57

为什么使用 JavaScript?您可以单独在 CSS 中执行此操作,但 IE6 不支持在

元素上执行此操作。

示例: http://jsfiddle.net/yr4yH/1/

< em>上面示例中的 CSS:

.h-video {
    width: 461px;
    height: 67px;
    background-image: url("http://www.theideapeople.com/projectpath/ideapeople-new/_images/btn_video-home.png");
    background-position: bottom center;
    background-repeat: no-repeat
}

.h-video:hover {
    background-position: top center;
}​

如果您需要支持 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:

.h-video {
    width: 461px;
    height: 67px;
    background-image: url("http://www.theideapeople.com/projectpath/ideapeople-new/_images/btn_video-home.png");
    background-position: bottom center;
    background-repeat: no-repeat
}

.h-video:hover {
    background-position: top center;
}​

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>.

猫烠⑼条掵仅有一顆心 2024-10-03 19:55:57

一些注意事项:

  1. 你的位置颠倒了:“中心顶部”而不是“顶部中心”和“中心底部”而不是“底部中心”参考:http://www.w3schools.com/css/pr_background-position.asp

  2. 使用addClass和RemoveClass。不要内嵌设置样式。使用它就像 docs.jquery.com 上的示例一样。

  3. 如果您不需要 IE 支持,请使用不带 javascript 的 CSS 声明。

Couple of notes:

  1. 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

  2. Use addClass and RemoveClass. Don't set styles in-line. Use it just like the example on docs.jquery.com.

  3. If you don't need the IE support use CSS declaration w/o javascript.

独留℉清风醉 2024-10-03 19:55:57

我将为这个解决方案留下一个单独的答案,但我仍然想说 使用 CSS 而不是 javascript

使用 .hover() 分配 then 处理程序的代码在元素加载之前运行。否则你的代码是正确的。

下面的代码示例使用 $(function() { ... }); 包装您的代码,这是 jQuery 的 .ready() 方法,确保在代码运行之前加载文档。

   // Wrap your code like this so it doesn't run until the DOM is ready
$(function() {
    $(".h-video").hover(function() {
     $(this).closest("div").css({ 'background-position': 'top center' });
        }, function() {
     $(this).closest("div").css({ 'background-position': 'bottom center' });
    });
});

另外,这里不需要 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.

   // Wrap your code like this so it doesn't run until the DOM is ready
$(function() {
    $(".h-video").hover(function() {
     $(this).closest("div").css({ 'background-position': 'top center' });
        }, function() {
     $(this).closest("div").css({ 'background-position': 'bottom center' });
    });
});

Also, jQuery's .closest() method isn't necessary here, but it doesn't hurt either. Might as well remove it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文