2016-07-05 7 views
0

Прямо сейчас после щелчка мой div .box меняет цвет фона на синий, я хотел бы, чтобы это применимо к детям h4, поэтому синий фон будет только у детей h4 div коробка.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> 

ЯШ:

$(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

ты забыл его во втором, если блок –

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 : #eeee; padding: 7px; } https://jsfiddle.net/wv4f2hda/9/ – Raduken

+1

Просто вы можете dd '! important' в ваш CSS-класс' .highlight', проверьте [jsFiddle] (https://jsfiddle.net/wv4f2hda/10/) :) –

1

У вас есть два варианта, чтобы сделать это, либо непосредственно выбрать h4 внутри div коробок как $('.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. Что-то вроде этого .highlight { фон: # 0000FF! Important; } –

+0

совершенные работы. :) – Raduken

Смежные вопросы