在jQuery中正确使用$(this)
using $(this) properly in jquery
$(".gear_listing").hover(function(){
$(".overlay_gears").show();
},function(){
$(".overlay_gears").hide();
}
);
上面是我的jQuery代码,你可以想象我试图在悬停.gear_listingdiv时显示.overlay_gearsdiv,上面的代码工作得很好.问题是我有很多数量的.gear_listingdiv和很多.overlay_gearsdiv,当我将鼠标悬停在任何名为.gear_listing的div上时,所有.overlay_gearsdiv都显示我不想要的div.我只想在下面显示.overlay_gearsdiv我知道我必须使用$(this(.gear_listing,我只是不知道怎么做。
我尝试这样做:
$(".gear_listing").hover(function(){
var this=$(this);
this.$(".overlay_gears").show();
},function(){
this.$(".overlay_gears").hide();
}
);
它不起作用
以下是我的div 结构:
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"></div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
<img src="images/list_one.jpg">
</div>
</a>
</li>
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"></div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
<img src="images/list_two.jpg">
</div>
</a>
</li>
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"></div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
<img src="images/list_three.jpg">
</div>
</a>
</li>
.overlay_gears
是.gear_listing
的孩子,所以像这样使用
$(".gear_listing").hover(function(){
$(this).children(".overlay_gears").fadeIn();
},function(){
$(this).children(".overlay_gears").fadeOut();
});
将.find()
和.slideToggle()
用于动画效果或使用.fadeToggle()
$(".gear_listing").hover(function() {
$(this).find(".overlay_gears").stop().slideToggle();
});
或
$(".gear_listing").hover(function() {
$(this).find(".overlay_gears").stop().fadeToggle();
});
小提琴
使用
,这是this
作为选择器中的second-argument
context
默认情况下,选择器在DOM starting at the document root
内执行搜索。但是,可以通过使用 $()
函数的可选第二个参数为搜索提供备用上下文。
在内部,选择器上下文是使用 .find()
方法实现的,因此$( "SELECTOR", this )
等效于$(this).find("SELECTOR")
$(".gear_listing").hover(function() {
$(".overlay_gears", this).show();
}, function() {
$(".overlay_gears", this).hide();
});
由于overlay_gears
是gear_listing
的子元素,因此可以使用.find()
方法
$(".gear_listing").hover(function() {
$(this).find(".overlay_gears").show();
}, function() {
$(this).find(".overlay_gears").hide();
});
基本上,您首先需要在悬停时隐藏所有.overlay_gears
,只需要显示当前悬停父级的子级的特定.overlay_gears
。然后在"取消悬停"事件中,您可以简单地隐藏所有.overlay_gears
div。
.HTML:
<ul>
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"> overlay_gears data1 overlay_gears data1</div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"> overlay_gears data2 overlay_gears data2</div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="gear_listing relative">
<div class="overlay_gears absolute"> overlay_gears data3 overlay_gears data3 overlay_gears data3</div>
<div class="gear_description absolute">
<span>afdfdsfds sfd</span>
</div>
</div>
</a>
</li>
</ul>
JQuery:
$(document).ready(function(){
$( ".gear_listing" ).hover(
function() {
$( ".overlay_gears" ).hide();
$( ".overlay_gears", this ).show();
}, function() {
$( ".overlay_gears" ).hide();
}
);
});
工作小提琴:http://jsfiddle.net/kfopaj7e/
我刚刚删除了
<img>
标签以进行测试,并在 Fiddle 中添加了一些 css 用于视觉效果
$(".gear_listing").hover(function(){
$(this).children('.overlay_gears').show();
}
在这里,我们使用所需的类选择 $(this( 中的所有元素http://www.w3schools.com/jquery/jquery_traversing_descendants.asp
函数中传递一个事件,例如
function(evt){
var th = $(evt.target);
$(th).find(".overlay_gears").show();
}
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- jQuery使用ajax自动完成问题-TypeError:this.source不是函数
- jquery$(this)对象缺少问题
- jQuery:具有class但不具有$(this)的元素
- jQuery的等价物's$(this)在Ractive.js事件代理中
- jQuery$(this)引用未定义
- jQuery双对象构造函数-例如$($(this))
- 在jQuery中正确使用$(this)
- jQuery“this”范围问题
- $(this)正在提醒jquery中以前选择的值
- How can I get and replace this in javascript ( jquery?
- Javascript Object - using jQuery and this
- 将jQuery选择器与“this”相结合
- jQuery(this) 目標不是找到元素
- 如何在嵌套的 .each()(s) 中正确使用“this”?(JQuery)
- Turn '$(this)' jquery to javascript 'this'
- 访问javascript native "this"jQuery内部
- 使用“this"jQuery插件的内部命名函数
- 设置'this'JQuery方法中匿名函数的上下文
- 绑定函数,包含"this"(JQuery)