onmouseover 和使用“this”的内联函数目的

发布于 2024-11-24 18:03:42 字数 278 浏览 3 评论 0原文

我有以下代码:

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

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

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

I have the following bit of code:

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

The function gets run just fine but it doesn't seem to be able to find the 'this'.
How can I make it so that it will know to self-reference?

(Yes, jquery is referenced in my code)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

放我走吧 2024-12-01 18:03:42

我不知道你是否想在那里使用匿名函数。我认为

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

会起作用。

I don't know if you want to be using an anonymous function there. I think

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

will work.

新雨望断虹 2024-12-01 18:03:42

如果您确实需要将其包装在匿名函数中,则可以这样做。

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

If you really need to wrap it up in an anonymous function, you can do this.

onmouseover="(function(that){$(that).css('background','green');})(this);"
楠木可依 2024-12-01 18:03:42

这将会变得混乱,因为你正在执行该函数。让我们稍微分解一下。

如果这不是内联的,它会看起来像这样:

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

注意到末尾的 () 了吗?这意味着您正在将函数分配给 onmouseover 之前执行代码。

试试这个:

This is going to be messed up because you're executing the function. Let's break this up a little.

If this was not inline, it would look like this:

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

Notice the () at the end? This means you're executing the code before the function gets assigned to onmouseover.

Try this instead:

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

旧梦荧光笔 2024-12-01 18:03:42

看来你正在使用 jQuery,为什么不完全这样做呢

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

Seems you're using jQuery, why not do it all the way

$('#tag').hover(function() { $(this).css('background', 'green'); });
<div id="tag"> ... </div>
扬花落满肩 2024-12-01 18:03:42

@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>

@matt you can do the same with css, just by using the :hover on the class.

.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;
}

and

<div id="some_div" class="SomeDiv"></div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文