javascript – jQuery – 淡入淡出不同的元素按钮单击

前端之家收集整理的这篇文章主要介绍了javascript – jQuery – 淡入淡出不同的元素按钮单击前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试创建一些按钮,根据单击的按钮显示一个框.我这样做是通过给每个盒子自己的类并将一个参数传递给一个函数来识别哪个盒子是目标.然后我将此函数分配给页面上的每个按钮的onclick属性(我知道我应该将事件处理程序附加到单独的文件中).这是功能

  1. var show = function(BoxNumber){
  2. if($(this).hasClass('shown')){
  3. $(this).removeClass('shown');
  4. $(this).html('Show');
  5. $('.Box'+BoxNumber).fadeOut(1000);
  6. }
  7. else{
  8. $(this).html('Hide');
  9. $(this).addClass('shown');
  10. $('.Box'+BoxNumber).fadeIn(1000);
  11. }
  12. };

html:

  1. Box 1Box1">Boxes

但是,此功能不起作用.首先,this关键字似乎不是以按钮为目标,因为按钮的html在点击时不会改变.但是,当我用按钮的类替换this关键字时,它工作正常.

其次,该功能可以精确地淡化框,但如果再次单击该按钮则不会隐藏它们.

我被卡住了所以任何帮助将不胜感激!谢谢.

最佳答案
解决方案1(所有jQuery):

最简洁的方法是坚持使用jQuery进行点击处理.您已经在使用jQuery进行淡入淡出,为什么不利用它来绑定点击?试试这个:

jsFiddle

  1. Box 1Box1">Box 2Box2">Box 3

    

  1. $('span').click(function () {
  2. var BoxNumber = $(this).index('span') + 1;
  3. if ($(this).hasClass('shown')) {
  4. $(this).removeClass('shown');
  5. $(this).html('Show');
  6. $('.Box' + BoxNumber).fadeIn(1000);
  7. } else {
  8. $(this).html('Hide');
  9. $(this).addClass('shown');
  10. $('.Box' + BoxNumber).fadeOut(1000);
  11. }
  12. });

注意:如果您希望淡出框保留在文档中的位置,请尝试使用fadeTo().

解决方案2(混合):

但是,如果您确实需要使用onclick属性来绑定您在示例中显示的单击处理程序,则可以这样执行:

jsFiddle

  1. Box 1Box1">Box 2Box2">Box 3

    

  1. function show(BoxNumber,elem) {
  2. $this = $(elem);
  3. if ($this.hasClass('shown')) {
  4. $this.removeClass('shown');
  5. $this.html('Show');
  6. $('.Box' + BoxNumber).fadeIn(1000);
  7. } else {
  8. $this.html('Hide');
  9. $this.addClass('shown');
  10. $('.Box' + BoxNumber).fadeOut(1000);
  11. }
  12. };

猜你在找的jQuery相关文章