首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用foreach更改悬停时的背景色

使用foreach更改悬停时的背景色
EN

Stack Overflow用户
提问于 2015-04-28 19:44:59
回答 3查看 189关注 0票数 1

我正在使用这段代码(smarty php模板代码)

代码语言:javascript
复制
{foreach $rewards as $reward}
                            <div id="reward" data-id="{$reward['id']}">
                                <div class="reward_data{$reward['id']}">
                                    <b>{strtoupper($reward['title'])}:</b><br/>
                                    {html_entity_decode($reward['description'])}
                                    <br/>
                                    <br/>
                                    <b>Estimated Delivery:</b> {$reward['estimated_delivery_date']}
                                    <br/>
                                    <br/>
                                    <button class="btn btn-danger">Select This Project</button>
                                </div>
                            </div>
                            <br/>
                            <br/>
                            <br/>
                        {/foreach}

在jquery中,我使用

代码语言:javascript
复制
$(document).ready(function () {
    $('#reward').hover(function () {
        var reward_id = $(this).attr('data-id');
        $('.reward_data' + reward_id).css("background-color", "#2bde73");
        $('.reward_data' + reward_id).css("padding", "10px");
        $('.reward_data' + reward_id).css("border-radius", "10px");
    }, function () {
        var reward_id = $(this).attr('data-id');
        $('.reward_data' + reward_id).css("background-color", "#ffffff");
    });
});

在前一次的悬停结果中,背景颜色发生了变化,但在第二次和第二次以上的结果中,有悬停的影响。请帮我介绍一下,我很感谢你

EN

回答 3

Stack Overflow用户

发布于 2015-04-28 19:55:30

对于简单地改变悬停时的背景颜色,CSS是你需要的工具。首先,您需要使用class而不是id,因为ids应该是唯一的。

所以

代码语言:javascript
复制
<div id="reward" data-id="{$reward['id']}">

变成了

代码语言:javascript
复制
<div class="reward" data-id="{$reward['id']}">

然后创建一个新的CSS规则,如下所示

代码语言:javascript
复制
.reward:hover .reward-data {
    background-color: #2bde73;
    padding: 10px;
    border-radius: 10px;
}

不需要JS和jQuery。

票数 1
EN

Stack Overflow用户

发布于 2015-04-28 19:48:05

看看这个:Can multiple different HTML elements have the same ID if they're different elements?

如果您知道一个ID需要是唯一的,那么您将会发现这是行不通的:您多次使用ID "reward“。

一种解决方案是将ID更改为一个类,并在jquery中将散列更改为一个点。

票数 0
EN

Stack Overflow用户

发布于 2015-04-28 20:20:37

将您的id更改为class:

代码语言:javascript
复制
{foreach $rewards as $reward}
                            <div class="reward" data-id="{$reward['id']}">
                                <div class="reward_data{$reward['id']}">
                                    <b>{strtoupper($reward['title'])}:</b><br/>
                                    {html_entity_decode($reward['description'])}
                                    <br/>
                                    <br/>
                                    <b>Estimated Delivery:</b> {$reward['estimated_delivery_date']}
                                    <br/>
                                    <br/>
                                    <button class="btn btn-danger">Select This Project</button>
                                </div>
                            </div>
                            <br/>
                            <br/>
                            <br/>
                        {/foreach}

和jquery,如下:

代码语言:javascript
复制
$(document).ready(function () {
    $('.reward').hover(function () {
        var reward_id = $(this).attr('data-id');
        $('.reward_data' + reward_id).css("background-color", "#2bde73");
        $('.reward_data' + reward_id).css("padding", "10px");
        $('.reward_data' + reward_id).css("border-radius", "10px");
    }, function () {
        var reward_id = $(this).attr('data-id');
        $('.reward_data' + reward_id).css("background-color", "#ffffff");
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29918552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档