在jquery中动画而不是射击

时间:2010-12-10 13:09:09

标签: jquery

我的意图是在单击隐藏按钮后立即隐藏div元素。但是当我点击隐藏按钮时,浏览器保持静音。

这是我的代码

 $.fn.slideFadeToggle = function(easing, callback) {
        return this.animate({ opacity: 'toggle', height: 'toggle' }, "slow", easing, callback);
    };

    $("#hid").click(function(){
        alert('here');
        $("#result").slideFadeToggle();
    });

hid是按钮的id,单击该按钮实际上应该隐藏div。点击功能内的警报也不起作用。

result是要隐藏的div的id。任何想法?

2 个答案:

答案 0 :(得分:2)

  

点击功能内的警报也不起作用。

这表明,当您执行$("#hid").click(...时,DOM中尚不存在ID为hid的元素。在创建DOM元素之前,您无法访问它们。

确保在尝试访问它们之前创建它们的三种方法是使用jQuery ready函数,以确保在元素之后加载脚本代码有问题,或使用jQuery的live功能。

因此,例如,这将失败:

<html>
...
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
    $("#hid").click(...);
</script>
</head>
<body>
<div id='hid'>...</div>
...

但这可行(通过ready的快捷方式):

<html>
...
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
    jQuery(function($) {
        $("#hid").click(...);
    });
</script>
</head>
<body>
<div id='hid'>...</div>
...

就像这样(因为脚本位于之后标记中的元素):

<html>
...
<script type='text/javascript' src='jquery.js'></script>
</head>
<body>
<div id='hid'>...</div>
<script type='text/javascript'>
    $("#hid").click(...);
</script>
...

......后者是谷歌团队的Closure recommend;同样地,YUI team recommend将您的脚本放在结束body标记之前,这也是同样的事情。

这将有效(通过live):

<html>
...
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
    $("#hid").live('click', ...);
</script>
</head>
<body>
<div id='hid'>...</div>
...

答案 1 :(得分:0)

嗯,它适用于chrome:jsfiddle

你在该代码之前导入jquery吗?