2016-07-05 42 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