如果在其他地方单击,则将背景颜色更改回来

Posted

技术标签:

【中文标题】如果在其他地方单击,则将背景颜色更改回来【英文标题】:Change background color back if clicked elsewhere 【发布时间】:2014-01-31 02:38:02 【问题描述】:

我正在使用此代码加载 div 的一些内容以及更改用户单击的选项卡的颜色。一旦用户单击其他内容,我无法弄清楚如何使背景颜色变回。我该怎么做?

$(function() 
        $('#tab-1').click(function() 
            var tabcontent = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($tabcontent[0]));?>";
            document.getElementById('top-tabs-content').innerhtml = tabcontent;
            $(this).css("background-color","#F7C703");
        );
    );

【问题讨论】:

【参考方案1】:
$(function() 
    $('#tab-1').click(function() 
        var tabcontent = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($tabcontent[0]));?>";
        document.getElementById('top-tabs-content').innerHTML = tabcontent;
        $('.tabclass').css("background-color","#defaultcolour");
        $(this).css("background-color","#F7C703");
    );
);

class 添加到元素,然后在将颜色应用于clicked element 之前,将所有elements 重置为默认颜色。

【讨论】:

谢谢,这很有效,很容易集成到我现有的代码中。 啊,不过有一个障碍。这似乎扼杀了我的#tab-1:hover 造型。我尝试添加$('.toptabs:hover').css("background-color","#F7C703");,但这似乎不起作用。我怎样才能把它带回来? 好的,这很好,给你的css添加一个样式,即:.clickedTab "background-color","#F7C703" 然后,而不是使用.css()函数来添加所需的css,使用.addClass("clickedTab").removeClass("clickedTab")添加和删​​除链接到类的样式的函数。【参考方案2】:

您可以将点击处理程序绑定到document 对象并使用.closest() 方法:

$(document).on('click', function(e) 
    if ( !$(e.target).closest('#tab-1').length ) 
       $('#tab-1').css("background-color", '');
    
);

http://jsfiddle.net/6g8g7/

【讨论】:

很好的答案,谢谢。我首先看到了另一个,它有效,但这种方法也可以。

以上是关于如果在其他地方单击,则将背景颜色更改回来的主要内容,如果未能解决你的问题,请参考以下文章

更改可扩展 ListView Android 中单击的子项的背景颜色

单击android时更改TextView背景颜色

更改双列表框中单击选项的背景颜色

DataGridView透明行选择和双击背景颜色更改

单击/触摸事件的背景颜色更改在触摸设备上不起作用

单击时多次更改 Div 背景颜色(循环)