JQuery 弹出窗口不起作用。

标签 jquery css

你好只是想问问为什么我的 JS 不能在这里工作

$('#toggle').click( 
   function() {
      $('#popout').animate({ top: -10px }, 'slow', function() {
          $('#toggle').html('Close');
      });
  }, 
  function() {
      $('#popout').animate({ top: 50 }, 'slow', function() {
        $('#toggle').html('Show');
      });
   }
);

我正在尝试让菜单显示: http://jsfiddle.net/N4ZHd/2/

请帮忙。

最佳答案

jQuery 的 click() 只接受一个函数,即触发事件(点击)时调用的函数。如果您尝试在函数之间切换,一种方法是使用 if 语句和元素的数据属性:

$('#toggle').click(function() {
    if(!$('#popout').data('open')){
        $('#popout').animate({ top: '-10px' }, 'slow', function() {
            $('#toggle').html('Close');
        }).data('open', true);
    } else {
        $('#popout').animate({ top: '50px' }, 'slow', function() {
            $('#toggle').html('Show');
        }).data('open', false);
    }
});

此外,如果您要在指定新样式时包含单位(即 top: '10px'),则必须在值两边加上引号。但是,在您的情况下,您可以只使用 -1050,因为如果您没有指定,jQuery 会自动假定您在谈论像素。

JSFiddle

如果您想使用三元运算符来缩短代码:

$('#toggle').click(function() {
    isOpen = $('#popout').data('open');
    $('#popout').animate({ top: isOpen ? '50px' : '-10px' }, 'slow', function() {
        $('#toggle').html(isOpen ? 'Close' : 'Open');
    }).data('open', isOpen ? false : true);
});

JSFiddle

关于JQuery 弹出窗口不起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19978683/

相关文章:

java - OnClick 在 JqGrid 行上创建的自定义按钮获取 json 参数

html - 位置绝对底部+滚动修复

jquery - 图像悬停时的不透明度降低会从文本中删除链接

css - 我们可以使用 CSS 在工具提示中显示与悬停的文本相同的文本吗

html - 仅在台式机上显示 adsense 广告并在手机上隐藏它

javascript - 如何在服务器关闭时预加载样式图像以使用它?

css - iCheck 库输入大小

jquery - 悬停时播放 YouTube 视频

c# - 通过 AJAX 在 Controller 操作中接收空值

javascript - 点击事件后 : how do i add somehting to a URL via javascript?