1

我想div使用 jquery 设置我的样式,我想让它在单击背景时变为蓝色,当我取消单击(我单击页面中除 div 以外的其他部分)时,背景变为红色。对不起,我的英语不好

4

5 回答 5

2

使用点击处理程序,document您可以捕获所有点击事件,如果点击不在您的 div 上,您可以恢复为红色

$('#yourdiv').click(function() {
   $(this).css('background-color', 'blue');
});

$(document).click(function(e) {
   if(!$(e.target).is('#yourdiv'))
      $('#yourdiv').css('background-color', 'red');
});

见例子:http: //jsbin.com/oyunin/1/edit

于 2012-12-17T14:53:38.550 回答
1

我不确定性能,但您可以执行以下操作:

    $("*").not("your element selector").on("click",function(){
         //other elements click
      });

一个好的做法是这样做:

$("*","some container").not......

于 2012-12-17T14:51:47.093 回答
0

Try this,

Jquery Code:

$(document).mouseup(function (e){
    var wrapDiv = $(".wrapper");
    if(wrapDiv.has(e.target).length === 0){
        wrapDiv.css('background-color','red');
    }
    $('.wrapper').click(function(event){
       $('.wrapper').css('background-color','blue')
    });
});

CSS code:

<style type="text/css">
.wrapper{
    background-color:#0FF;
    width:200px;
    height:200px;
    }
</style>

Html code:

<div class="wrapper">
</div>
于 2012-12-17T15:05:00.550 回答
0

我在我的站点中解决它的方法是向有问题click的问题添加一个事件,并在一般文档中添加div另一个事件。click该方法stopImmediatePropagation()使其按预期工作:

这是一个带有工作示例的jsFiddle 。

HTML:

<div class="colored"></div>

查询:

$(document).click(function(e){
    $(".active").removeClass("active");
});

$(".colored").live("click",function(e){
    $(this).addClass("active");
    e.stopImmediatePropagation();
});

CSS:

.colored{background:red}
.colored.active{background:blue}
于 2012-12-17T14:49:18.977 回答
0

如果您想在单击另一个 div 时更改 div,可以在另一个 div 上添加单击事件,或者您可能希望将单击事件添加到文档的整个正文中,以便在未捕获单击事件时并被另一个侦听器停止,它将通过主体的事件侦听器。

于 2012-12-17T14:52:02.777 回答