jquery绝对位置动画

发布于 2024-09-07 17:32:11 字数 460 浏览 4 评论 0原文

我在一段代码上遇到了问题

$(function(){  
 $('input.no').click(function(){  
 $(this).animate({"left" : "80px"}, 150);  
 $(this).removeClass().addClass('click');   });  

 $('input.click').click(function(){  
 $(this).animate({"right" : "0px"}, 150);  
  });  
});  

,在这里你可以看到完整的代码 http://pastebin.me/a5b13717c5d7125cd904572c041ce3e1 不工作:(

I'm having trouble with a piece of code

$(function(){  
 $('input.no').click(function(){  
 $(this).animate({"left" : "80px"}, 150);  
 $(this).removeClass().addClass('click');   });  

 $('input.click').click(function(){  
 $(this).animate({"right" : "0px"}, 150);  
  });  
});  

and here you can see the full code
http://pastebin.me/a5b13717c5d7125cd904572c041ce3e1
not working :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲喜皆因你 2024-09-14 17:32:11

不使用 live 或 delegate:

向按钮添加一个类,例如: slider-button

$(function() {
  $('.slider-button').bind('click', function() {
    if ($(this).hasClass('no')) {
       $(this).animate({"left" : "80px"}, 150);  
       $(this).removeClass('no').addClass('click');  
    } else {
       $(this).animate({"left" : "0px"}, 150);  
       $(this).removeClass('click').addClass('no');  
    }       
  });    
});

Without using live or delegate:

Add a class to the button like: slider-button

$(function() {
  $('.slider-button').bind('click', function() {
    if ($(this).hasClass('no')) {
       $(this).animate({"left" : "80px"}, 150);  
       $(this).removeClass('no').addClass('click');  
    } else {
       $(this).animate({"left" : "0px"}, 150);  
       $(this).removeClass('click').addClass('no');  
    }       
  });    
});
苯莒 2024-09-14 17:32:11

未处理第二次单击的原因是,在绑定处理程序时,没有 input.click 元素,因此处理程序未绑定。

为了确保在更改输入的类后绑定处理程序,您需要使用 live

$(function() {
  $('input.no').live('click', function() {
    $(this).animate({"left" : "80px"}, 150);  
    $(this).removeClass().addClass('click');  
  });

  $('input.click').live('click', function() {
    $(this).animate({"right" : "0px"}, 150);  
    $(this).removeClass().addClass('no');  
  });
});

The reason the second click is not handled is that at the time you bind your handler, there are no input.click elements, so the handler isn't bound.

To make sure the handler is bound after you change the input's class, you need to use live:

$(function() {
  $('input.no').live('click', function() {
    $(this).animate({"left" : "80px"}, 150);  
    $(this).removeClass().addClass('click');  
  });

  $('input.click').live('click', function() {
    $(this).animate({"right" : "0px"}, 150);  
    $(this).removeClass().addClass('no');  
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文