2016-07-05 111 views
0

现在点击我的div .box正在将背景颜色更改为蓝色,我想申请h4的孩子,所以蓝色背景只会在div的子h4中框。jquery更改h4的背景颜色点击

格箱无背景时,点击和 H4将获得蓝色背景

HTML:

<div class="box"><i class="fa fa-lg fa-trash"></i> 
    <h4> 
hello world </h4> 
    </h4> 
</div> 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
    <h4> 
hello world </h4></div> 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
    <h4> 
hello world </h4></div> 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
    <h4> 
hello world </h4></div> 

JS:

$(document).ready(function() { 

    var click = false; 
    $(document).on('click', '.box', function() { 
    if ($(this).hasClass('highlight')) { 
     $(this).removeClass('highlight'); 
     click = false; 
     return false; 
    } 
    if (!click) { 
     $(this).find("i").removeClass('red'); 
     $(this).addClass('highlight'); 
     click = true; 
    } else { 
     $(this).find("i").toggleClass('red'); 
    } 
    }); 
}); 

CSS:

.box { 
    float: left; 
    height: 100px; 
    width: 100px; 
    border: 1px solid #000; 
    margin-right: 10px; 
} 

.highlight { 
    background: #0000FF; 
} 

.fa-trash.red { 
    color: red; 
} 

.fa-trash { 
    color: green; 
} 

https://jsfiddle.net/wv4f2hda/7/

+1

使用'$(本).find( 'H4')addClass( '亮点');' – guradio

回答

2

更换$(this).addClass('highlight');$("h4", this).addClass('highlight');

+0

没有工作:( – Raduken

+1

你已经忘记了它的第二个if块 –

1

试试这个:

$(document).ready(function() { 

    var click = false; 
    $(document).on('click', '.box', function() { 
    if ($(this).find('h4').hasClass('highlight')) { 
     $(this).find('h4').removeClass('highlight'); 
     click = false; 
     return false; 
    } 
    if (!click) { 
     $(this).find("i").removeClass('red'); 
     $(this).find('h4').addClass('highlight'); 
     click = true; 
    } else { 
     $(this).find("i").toggleClass('red'); 
    } 
    }); 
}); 
+0

再次检查[jsFiddle](https://jsfiddle.net/wv4f2hda/8/) –

+0

谢谢,但是如果h4之前已经有背景色,会发生什么?.box h4 { font-size:0.875rem; background-color :#eeeeee; padding:7px; } https://jsfiddle.net/wv4f2hda/9/ – Raduken

+1

只要你可以dd'!important'给你的'.highlight' CSS类,Check [jsFiddle](https://jsfiddle.net/wv4f2hda/10/):) –

1

你有两个选择这样做,要么直接选择h4div盒子里像$('.box > h4'),或者使用find()之类的函数$('.box').find('h4')

下面的示例。

$(document).ready(function() { 
 

 
    var click = false; 
 
    $('.box > h4').on('click', function() { 
 
    if ($(this).hasClass('highlight')) { 
 
     $(this).removeClass('highlight'); 
 
     click = false; 
 
     return false; 
 
    } 
 
    if (!click) { 
 
     $(this).find("i").removeClass('red'); 
 
     $(this).addClass('highlight'); 
 
     click = true; 
 
    } else { 
 
     $(this).find("i").toggleClass('red'); 
 
    } 
 
    }); 
 

 

 
    /* You can also do this */ 
 
    /* 
 
    $('.box').find('h4').on('click', function() { 
 
    if ($(this).hasClass('highlight')) { 
 
     $(this).removeClass('highlight'); 
 
     click = false; 
 
     return false; 
 
    } 
 
    if (!click) { 
 
     $(this).find("i").removeClass('red'); 
 
     $(this).addClass('highlight'); 
 
     click = true; 
 
    } else { 
 
     $(this).find("i").toggleClass('red'); 
 
    } 
 
    }); 
 
    */ 
 
});
.box { 
 
    float: left; 
 
    height: 100px; 
 
    width: 100px; 
 
    border: 1px solid #000; 
 
    margin-right: 10px; 
 
} 
 
.highlight { 
 
    background: #0000FF; 
 
} 
 
.fa-trash.red { 
 
    color: red; 
 
} 
 
.fa-trash { 
 
    color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
 
    <h4> 
 
hello world </h4> 
 
    </h4> 
 
</div> 
 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
 
    <h4> 
 
hello world </h4> 
 
</div> 
 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
 
    <h4> 
 
hello world </h4> 
 
</div> 
 
<div class="box"><i class="fa fa-lg fa-trash"></i> 
 
    <h4> 
 
hello world </h4> 
 
</div>

+0

谢谢,但是如果h4之前有背景色,会发生什么? .box h4 {font-size:0.875rem; background-color:#eeeeee;填充:7px; } jsfiddle.net/wv4f2hda/9 – Raduken

+1

您可以做的最简单的事情就是在.highlight类中为background属性添加!important。像这样的东西。高光背景:#0000FF!重要; } –

+0

完美作品。 :) – Raduken