jquery $(this).parent()...无法从外部调用的函数中运行

时间:2010-11-07 18:07:08

标签: jquery function

正如您在下面的代码中看到的那样。我有一个外部调用的jQuery函数。

我不明白为什么我不能获得类名,我得到一个“未定义”的警报,我期待“classifyClass”,你能帮忙吗?谢谢。

<html>
<head>
    <meta charset="utf-8">
    <title>parent</title>
    <script src="./js/jquery-1.4.2.min.js"></script>
    <script>
            function classify() {
                //some jquery stuff here alredy, and it works...

                //now I want to get/set the parent class, but not working (getting an alert with written "undefined", why?
                var myclass = $(this).parent().attr('class');
                alert(myclass);
            }
    </script>
</head>
<body>

<div class="pos">
    <div class="classifyClass">
        <div style="width:50px;height:50px;background-color:red;" onclick="javascript:classify();return false;"></div>
        <div style="width:50px;height:50px;background-color:green;" onclick="javascript:classify();return false;"></div>
    </div>
</div>

<div id="feedback"></div>

</body>
</html>

P.S。我不想使用我需要调用函数的jquery选择器,因为我传递了一些asp.net参数,我在这里简化了示例,专注于主要问题。谢谢。

1 个答案:

答案 0 :(得分:4)

在您当前的上下文中,this引用window对象。您需要传递this,如下所示:

onclick="return classify(this);"

使用匹配的脚本:

function classify(elem) {
  //some jquery stuff here alredy, and it works...
  var myclass = $(elem).parent().attr('class');
  alert(myclass);
  return false;
}

或(更好),不引人注意地绑定(使用当前函数,this将起作用),如下所示:

$(".classifyClass > div").click(classify);