首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选项卡具有活动类时更改css

选项卡具有活动类时更改css
EN

Stack Overflow用户
提问于 2012-11-20 06:28:59
回答 4查看 2.1K关注 0票数 0

我正在尝试更改<body>的背景颜色,这取决于特定于活动的选项卡。

当选项卡处于活动状态时,名为“st_view_active”的类将添加到选项卡内容中。在选项卡内容中,我添加了一个隐藏的div,其中包含十六进制代码,即当该选项卡处于活动状态时,我的身体背景颜色应该是什么,我的jQuery代码如下所示:

代码语言:javascript
运行
复制
$(document).ready(function() {
    $(function(){
         $('body').css('backgroundColor',$('.st_view_active').find('.background').text());
     });
 });

当标签处于活动状态时,我的html代码如下:

代码语言:javascript
运行
复制
<div class="tab-6 st_view st_view_active" >
   <div style="display:none" class="background">yellow</div>
   <div class="st_view_inner">
        tab 6
    </div>
</div>

因此,当tab6处于活动状态时,正文的背景应为黄色。但是,这不起作用,背景颜色没有改变,我在这里做错了什么?

DEMOJSfiddle

谢谢PS:红色和蓝色方块是下一个和上一个制表符处理程序。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-20 07:20:56

查看此处:http://jsfiddle.net/CNYDU/25/

我将默认颜色放在sColor的末尾,但是您也可以获取第一个视图并使用它的颜色。我这样做是为了减少测试,因为你的小提琴使用起来很痛苦。

代码语言:javascript
运行
复制
$(document).ready(function() {
    var hsh = window.location.hash.replace('#','');
    var sColor = hsh ? $("#slidetabs_45").find("."+hsh+" .background").text() : "#3b0";
    $("body").css("background-color", sColor);

    $("#slidetabs_45").slidetabs({
        onContentVisible:function(e){
            var color = $("#slidetabs_45").find(".st_view_active .background").text();

            $("body").css("background-color", color);
        }
    });       
});

我还向第一个视图添加了.st_view_active类,以便它可以正确启动。

我还添加了背景颜色的CSS3过渡,这是不必要的。

票数 2
EN

Stack Overflow用户

发布于 2012-11-20 06:54:53

这听起来像是在html中使用数据元素的绝佳机会。您可以简单地向选项卡a标记添加一个data-color属性,而不是使用您想要的背景色来隐藏div。然后,当单击div时,您可以使用事件处理程序轻松设置颜色。

链接到更新的fiddle - http://jsfiddle.net/CNYDU/15/

注意:下一个和上一个选项卡在本例中不起作用,但是让它们起作用应该很容易,只需为每个运行的选项卡附加一个监听器

$('body').css('background-color', $(".st_tab_active").attr('data-color'));

作为它的回调。

票数 0
EN

Stack Overflow用户

发布于 2012-11-20 06:49:43

查看jQuery的livequery插件。

动态查询还能够在匹配新元素时触发函数(回调),并在元素不再匹配时触发另一个函数(回调)。这提供了终极的灵活性和无数的用例。例如,下面的代码使用基于函数的Live Query来实现jQuery悬停帮助器方法,并在元素不再匹配时移除它。

他们的例子:

代码语言:javascript
运行
复制
$('li') 
.livequery(function(){ 
// use the helper function hover to bind a mouseover and mouseout event 
    $(this) 
        .hover(function() { 
            $(this).addClass('hover'); 
        }, function() { 
            $(this).removeClass('hover'); 
        }); 
}, function() { 
    // unbind the mouseover and mouseout events 
    $(this) 
        .unbind('mouseover') 
        .unbind('mouseout'); 
}); 

您应该能够适应css的变化,如触发的事件,并因此根据哪个选项卡处于活动状态来执行您的操作。

我已经派生了Jlange's jsfiddle,它使用了data属性,演示了如何使用这个插件:

  • http://jsfiddle.net/nj6ZY/2/
  • http://jsfiddle.net/nj6ZY/2/show/#tab-10 -还可以使用链接激活特定的选项卡

以及相关的比特:

代码语言:javascript
运行
复制
$('.st_tabs_ul li a.st_tab_active').livequery(function(){ 
    $('body').css('background-color', $(this).data('color'));
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13463460

复制
相关文章

相似问题

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