如何使用“this”关键字定位元素?

Posted

技术标签:

【中文标题】如何使用“this”关键字定位元素?【英文标题】:How to target an element using "this" keyword? 【发布时间】:2015-02-17 16:23:41 【问题描述】:
<div class="col-xs-12 col-sm-4">
        <div class="thumbnail-container">
            <img class="img-responsive" src="http://placehold.it/1024x768" >
            <div class="thumbnail-overlay"></div>
            <p class="text-center text-nowrap" style="display:block">title</p>
        </div>
    </div>

function overlay () 
    $('.thumbnail-container > .text-center').mouseenter(function () 
        $('.thumbnail-container > .thumbnail-overlay').fadeOut(500)
    )
    $('.thumbnail-container > .text-center').mouseleave(function () 
        $('.thumbnail-container > .thumbnail-overlay').fadeIn(500)
    )

我有其中的 6 个 "thumbnail-container",我想仅在其中一个悬停时执行该 jquery 代码(显然)。现在,当我将鼠标悬停在"p.text-center" 上时,代码会淡出所有6 容器中的所有div。我尝试将"this" 关键字放在任何地方,但它仍然无法正常工作。

【问题讨论】:

您确定您使用的this 正确吗? ***.com/questions/1051782/jquery-this-vs-this mouseenter 回调中,this 代表被悬停的.text-center 元素。您需要从该上下文中选择父 .thumbnail-container 【参考方案1】:
function overlay () 
    $('.thumbnail-container > .text-center').mouseenter(function () 
        $(this).parent().find('.thumbnail-overlay').fadeOut(500)
    );
    $('.thumbnail-container > .text-center').mouseleave(function () 
        $(this).parent().find('.thumbnail-overlay').fadeIn(500)
    );

【讨论】:

【参考方案2】:

您的事件处理程序位于.text-center 上,但您要淡出的元素是它与.thumbnail-overlay 的同级元素,因此您可以这样做:

$(this).siblings('.thumbnail-overlay').fadeOut(500)

【讨论】:

是的。而已。谢谢。 jbarnett 解决方案也有效,但您的输入更少【参考方案3】:
<p class="text-center text-nowrap" style="display:block" mouseenter="fade_out(this)" mouseleave="fade_in(this)">title</p>

function fade_in(element)
    $(element).fadeIn(500);


function fade_out(element)
    $(element).fadeOut(500);

【讨论】:

以上是关于如何使用“this”关键字定位元素?的主要内容,如果未能解决你的问题,请参考以下文章

Vue2 如何使用 $refs 定位元素并删除 css 类

如何在函数调用模式中使用“this”关键字?

建议在Protractor中定位父元素的方法

在“停止”事件期间如何定位克隆的可拖动元素?

如何定位这个组件的 HTML 属性,有没有更简单的方法来获取这个元素?

如何在使用 Selenium Python 之前定位伪元素 ::before