我觉得我必须在一些jQuery函数中使用太多.children()
。
这是我的HTML:
<div class="goal-small-container">
<div class="goal-content">
<div class="goal-row">
<span class="goal-actions">
这是我的jQuery:
$('.goal-small-container').hover(function() {
$(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"});
}, function () {
$(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "hidden"});
});
有更好的方法吗?如何减少我在jQuery函数中使用的子项数量?
答案 0 :(得分:27)
.find('.goal-content .goal-row .goal-action').whatever()
或更简单:
.find('.goal-action').whatever()
答案 1 :(得分:14)
.find()
吗?
$('.goal-small-container').hover(function() {
$(this).find('.goal-actions').css({visibility: "visible"});
}, function () {
$(this).find('.goal-actions').css({visibility: "hidden"});
});
答案 2 :(得分:9)
而不是
$(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"});
您可以使用:
$(this).find('> .goal-content > .goal-row > .goal-actions').css({visibility: "visible"});
完全相同的含义。但是,如果不存在歧义,(.goal-actions
只会出现在标记的结构中),您可以使用find('.goal-actions')
。
答案 3 :(得分:1)
你可以使用:
$('.goal-small-container').hover(function() {
$(this).find('goal-actions').show();
}, function() {
$(this).find('goal-actions').hide();
});
答案 4 :(得分:0)
为什么不在第二个<div>
上使用.show()和.hide()?而且,最初让它们显示隐藏或其他东西。