使用'this'对象的onmouseover和内联函数

时间:2011-07-16 07:34:35

标签: javascript jquery html onmouseover

我有以下代码:

<div id="some_div" style="border: solid 1px red; width:50px; height: 50px;" 
onmouseover="(function(){$(this).css('background','green');})();"></div>

该函数运行得很好,但它似乎无法找到'this'。 我怎样才能让它知道自我引用?

(是的,我的代码中引用了jquery)

5 个答案:

答案 0 :(得分:3)

我不知道你是否想在那里使用匿名功能。我想

<div id="some_div" style="border: solid 1px red; width:50px; height: 50px;" 
onmouseover="$(this).css('background','green');"></div>

会奏效。

答案 1 :(得分:1)

如果你真的需要将它包装在一个匿名函数中,你可以这样做。

onmouseover="(function(that){$(that).css('background','green');})(this);"

答案 2 :(得分:1)

这会搞砸,因为你正在执行这个功能。让我们稍微分解一下。

如果这不是内联的,它将如下所示:

onmouseover = (function(){
    $(this).css('background','green');
})();

注意到最后的()?这意味着您在将函数分配给onmouseover之前执行代码。

请改为尝试:

<div id="some_div" style="border: solid 1px red; width:50px; height: 50px;" onmouseover="$(this).css('background','green');"></div>

答案 3 :(得分:1)

@matt你可以用css做同样的事情,只需在课堂上使用:hover

.SomeDiv
{
    border: solid 1px red; 
    width:50px; 
    height: 50px;
    /*remove the below line if you like to keep the hover color*/
    background-color:white;
}

.SomeDiv:hover
{
    background-color:green;
}

<div id="some_div" class="SomeDiv"></div>

答案 4 :(得分:1)

似乎你在使用jQuery,为什么不一直这样做

$('#tag').hover(function() { $(this).css('background', 'green'); });
<div id="tag"> ... </div>