JQuery - 为什么我得到“目标未定义”

时间:2011-10-05 05:38:58

标签: jquery

$(document).ready(function() 
{ 
    $(".menubutton").click(function()
        { 
        var $id=$(event.target.id.substring(0,2));
        $(".active").animate({"top": "-=1000px"}, speedanim);
        $("div#homedrawer div").filter($(".active")).removeClass("active");
        $("#"+$id).animate({"top": "+=1000px"}, speedanim);
        $("#"+$id).addClass("active");
        return false; 
        });

});

以上代码生成此错误“目标未定义”,参考以下行:

var $id=$(event.target.id.substring(0,2));

这是HTML:

<a id="fesbtn" class="menubutton" href="#"><img src="img/menu/fes.png" alt="" /></a>
<a id="futbtn" class="menubutton" href="#"><img src="img/menu/fut.png" alt="" /></a>
<a id="reibtn" class="menubutton" href="#"><img src="img/menu/rei.png" alt="" /></a>
...

显然我的语法错了。有什么想法吗?谢谢

3 个答案:

答案 0 :(得分:2)

事件缺少作为点击处理程序的参数

答案 1 :(得分:0)

事件未定义

javascript变量也不应该以$

开头

答案 2 :(得分:0)

如果您要执行的操作是获取所单击按钮的ID,请将其替换为:

var $id=$(event.target.id.substring(0,2));

用这个:

var $id = this.id.substring(0,2);

使用this来引用生成事件的对象。比进入你没有定义的事件对象容易得多(这就是你得到JS错误的原因)。

从代码的其余部分来看,您似乎只希望$id成为字符串。如果是这种情况,那么不要试图从中创建一个jQuery对象。你意识到你在这里只得到一个2个字符的字符串吗?看起来您可能在按钮ID中有三个唯一的字符。