2017-02-11 159 views
1

我正在练习我自己的网站的HTML,并偶然发现这一点。我相信这是一个简单的解决方法,但想知道如何实现它。我希望我所有的列表项目或甚至只是一个特定的类受到影响。我知道.each()方法访问jQuery对象中匹配的所有元素。此代码使用.each()方法有效地访问所有列表项。 $(function() { var $li = $('li'); $li.hide().each(function(index) { $(this).delay(700 * index).fadeIn(700) }); });如何在jQuery中使用.on()方法和.each()方法。?

此代码不会有。每()方法,在这里,因为我试过将其放置在多个地方,甚至试图速记文件准备功能包裹后整个块在新的匿名功能。

$(function() { 
var $list = $('.nav'); 
$list.on('click', function() { 
    $(this).animate({ 
     opacity: 0.0, 
     paddingLeft: '+=80' 
    }, 500, function() { 
     $(this).remove(); 
    }); 
}); 

});

这只适用于属性为nav的第一类项目。 任何帮助非常感谢。谢谢!

回答

0

你不需要.each()因为.on()已适用于每一个项目在列表中。

您的代码已经写入.nav类的每个项目。下面是一个工作代码片段来说明。您可以点击三个项目中的每一个并观察它们消失。如果它不适用于你的应用程序,那一定是由于其他问题。检查你的jQuery对象,并确保它确实包含你认为它所做的所有元素!

$(function() { 
 
var $list = $('.nav'); 
 
$list.on('click', function() { 
 
    $(this).animate({ 
 
     opacity: 0.0, 
 
     paddingLeft: '+=80' 
 
    }, 500, function() { 
 
     $(this).remove(); 
 
    }); 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="nav"> 
 
First item 
 
</div> 
 

 
<div class="nav"> 
 
Second item 
 
</div> 
 

 
<div class="nav"> 
 
Third item 
 
</div>

+0

好的,谢谢。说得通。我得到它的工作,但它是在第三次点击后触发的。奇怪的。这可能与HTML有关。我是编码新手,感谢您的反馈。再次感谢。 – Cruhsh

+0

双击*不是第三个 – Cruhsh

+0

@Cruhsh当您在我的答案中尝试了代码片段时,会发生这种情况吗?或者当你在别的地方使用相同的代码? – Robert

0

试试这个:

$(function() { 
    $(document).on('click', '.nav', function() { 
     $(this).animate({ 
      opacity: 0.0, 
      paddingLeft: '+=80' 
     }, 500, function() { 
      $(this).remove(); 
     }); 
    }); 
}); 

你想删除所有的单一的点击?如果这样下面会起作用。

$(function() { 
     $(document).on('click', '.nav', function() { 
      $('.nav').animate({ 
       opacity: 0.0, 
       paddingLeft: '+=80' 
      }, 500, function() { 
       $('.nav').remove(); 
      }); 
     }); 
    }); 
+0

谢谢,但它仍然只是抓住在匹配集的第一个元素。我正在寻找一种将.each()方法与.on()方法结合的方法。 – Cruhsh

+0

不应该,你必须在你认为我的代码的其他部分有问题。 – mhshimul

相关问题