繁体   English   中英

如何在点击时分别为每个元素设置动画?

[英]How can I animate each element separately on click?

我当前的代码为 class“.movinglinecontainer”的所有实例设置动画。 我希望我的代码只为被点击的实例运行。

我尝试实现 $(this) 但似乎无法使其正常工作。

 function ani() { var loadingbar = jQuery('.movinglinecontainer'); if (loadingbar.hasClass('movingline')) { loadingbar.removeClass('movingline').addClass('movinglinereverse'); } else if (loadingbar.hasClass('movinglinereverse')) { loadingbar.removeClass('movinglinereverse').addClass('movingline'); } else { loadingbar.addClass('movingline'); } }; jQuery(document).ready(function() { jQuery('.movinglinecontainer').on("click", function() { ani(); }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="intro">Frequently Asked Questions</div> <div class="faq-accordion" data-accordion-group=""> <div data-accordion="" class="faq-main" onclick="ani();"> <div data-control="" class="faq-title"> <h4>Question goes here?</h4> </div> <div id="" class="movinglinecontainer"></div> <div data-content="" style="max-height: 0px; overflow: hidden; transition: max-height 300ms ease 0s;"> <div class="faq-content"> <p class="answer-content">Answer goes here</p> </div> </div> </div> <div data-accordion="" class="faq-main" onclick="ani()"> <div data-control="" class="faq-title"> <h4>Question 2 goes here?</h4> </div> <div id="" class="movinglinecontainer"></div> <div data-content="" style="max-height: 0px; overflow: hidden;"> <div class="faq-content"> <p class="answer-content">Answer 2 goes here!</p> </div> </div> </div>

您可以尝试将$(this)作为参数传递给您的 function:

 function ani(loadingbar) { if(loadingbar) { if (loadingbar.hasClass('movingline')) { loadingbar.removeClass('movingline').addClass('movinglinereverse'); } else if (loadingbar.hasClass('movinglinereverse')) { loadingbar.removeClass('movinglinereverse').addClass('movingline'); } else { loadingbar.addClass('movingline'); } } }; jQuery(document).ready(function() { jQuery('.movinglinecontainer').on("click", function() { ani($(this)); }); });
 .movinglinecontainer { height: 20px; transition: width 3s linear; background: aqua; width:30% }.movingline { width: 100% }.movinglinereverse { width: 30% }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="intro">Frequently Asked Questions</div> <div class="faq-accordion" data-accordion-group=""> <div data-accordion="" class="faq-main" onclick="ani();"> <div data-control="" class="faq-title"> <h4>Question goes here?</h4> </div> <div id="" class="movinglinecontainer"></div> <div data-content="" style="max-height: 0px; overflow: hidden; transition: max-height 300ms ease 0s;"> <div class="faq-content"> <p class="answer-content">Answer goes here</p> </div> </div> </div> <div data-accordion="" class="faq-main" onclick="ani()"> <div data-control="" class="faq-title"> <h4>Question 2 goes here?</h4> </div> <div id="" class="movinglinecontainer"></div> <div data-content="" style="max-height: 0px; overflow: hidden;"> <div class="faq-content"> <p class="answer-content">Answer 2 goes here!</p> </div> </div> </div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM