如何减少我在jQuery函数中使用的子项数量?

时间:2010-10-04 01:11:03

标签: jquery html css children

我觉得我必须在一些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函数中使用的子项数量?

5 个答案:

答案 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()?而且,最初让它们显示隐藏或其他东西。