我在p标签<p><input type="checkbox" /></p>
中包含了多个输入复选框。当复选框为background-color
时,我正在尝试更改P标记的:checked
我遇到的问题是所有<p> </p>
标记背景颜色同时发生变化。我只希望更改当前段落标记background-color
。
HTML
<p>
<input type="checkbox" />
<label>Animals & Pets</label>
</p>
<p>
<input type="checkbox" />
<label>Business & Finance</label>
</p>
<p>
<input type="checkbox" />
<label>Auto's & Cycles</label>
</p>
CSS
.highlight { background-color: #DDD; }
的jQuery
$(document).ready(function() {
$('input').click(function() {
if ($(this).is(':checked')) {
$('p').addClass('highlight')
} else {
$('p').removeClass('highlight')
}
});
});
答案 0 :(得分:4)
使用closest
:
$('input').change(function () {
if ( this.checked ) {
$(this).closest('p').addClass('highlight');
} else {
$(this).closest('p').removeClass('highlight');
}
});
使用toggleClass
:
$('input').change(function () {
$(this).closest('p').toggleClass('highlight', this.checked);
});
答案 1 :(得分:4)
您可以使用closest()
定位父段落,并使用toggleClass()
切换课程,change
事件将是更改复选框时要侦听的正确事件:< / p>
$(document).ready(function() {
$('input').on('change', function() {
$(this).closest('p').toggleClass('highlight', this.checked);
});
});
答案 2 :(得分:0)
使用this
代替p
。然后使用.parent()
$(document).ready(function() {
$('input').click(function() {
if ($(this).is(':checked')) {
$(this).parent().addClass('highlight')
} else {
$(this).parent().removeClass('highlight')
}
});
});