jquery如何在hover时只更改一个父级
当我将鼠标hover在
标签上时,我只想更改一个父级。 代码是:
$('.hover').each(function () { $(this).parent().hover(function () { $('p').parent(this).css('font-size','30px'); }, function () { $('p').parent(this).css('font-size','10px'); }); });
而HTML是:
- 1
xxxx
- 2
yyyy
当我将鼠标hover在“xxxx”上时,我希望“1”和“xxxx”改变,但“2”和“yyyy”什么都不做,当我将鼠标hover在“yyyy”上时,我希望“2”和“yyyy”改变但“1”和“xxxx”什么都不做。
我是jQuery的新手。
$('p.hover').parent().hover(function() { $(this).children('p').css('font-size','30px'); }, function () { $(this).children('p').css('font-size','10px'); });
您不必使用每个循环来添加hover。 如果您选择了多个元素,它将在所有元素上应用该事件。
话虽如此,我稍微优化了您的代码。
我已经在段落的父级上添加了hover,就像你一样。 通过在事件的回调中使用$(this)
,我实际上可以选择hover元素并在该元素上应用样式。
因为我希望在段落上应用font-size,所以我先选择所需的子项。
总结如上:
- 找到段落元素(
$('p.hover')
) - 得到它的父元素,
li
元素(.parent()
) - 应用hover事件(
.hover()
)
一旦调用hover事件:
- 获取当前元素(
$(this)
) - 找到内部段落(
.children('p')
) - 应用样式
你可以用
$('p').closest('li').css('font-size','30px');
在您的情况下,
父级是
。 你需要:
$('.hover').parent().parent().hover( function () { $(this).css('font-size','30px'); }, function () { $(this).css('font-size','10px'); });