jQuery 'this' 跟随一个 .find click 函数
jQuery 'this' following a .find click function
需要一些帮助...我有以下JavaScript代码:
var quickSection = $('.quick-links');
var quickContent = $('.quick-links .row .inner-content')
if ( quickSection.is('*') ) {
quickContent.find("img").click(function() {
$(this).find("ul").slideDown("slow");
});
}
我的变量 quickContent 有三个实例。 每个都有一个ul,img等。 我需要显示与单击的图像相关的 ul。 我认为上面的代码可以解决问题,但我想"this"也从上一行返回".find(img)"。 关于如何以最有效的方式解决此问题的任何提示? 任何帮助都非常感谢。
.html:
<div class="quick-links block">
<div class="main-wrap container">
<div class="row">
<div class="col-sm-4 first column">
<div class="inner-content">
<h2>Admissions<a><img src="/sites/all/themes/merge/img/blue-down.png" /></a></h2>
<ul>
<li><a>Apply Now</a></li>
<li><a>Schedule a Visit</a></li>
<li><a>Student Life</a></li>
</ul>
</div><!--end inner-content-->
</div><!--end col-->
<div class="col-sm-4 second column">
<div class="inner-content">
<h2>Academics<a><img src="/sites/all/themes/merge/img/green-down.png" /></a></h2>
<ul>
<li><a>A Liberal Arts Degree</a></li>
<li><a>College of Arts & Sciences</a></li>
<li><a>College of Business</a></li>
<li><a>College of Health Sciences</a></li>
</ul>
</div><!--end inner-content-->
</div><!--end col-->
<div class="col-sm-4 third column">
<div class="inner-content">
<h2>Student Life<a><img src="/sites/all/themes/merge/img/gold-down.png" /></a></h2>
<ul>
<li><a>Campus Photo Tour</a></li>
<li><a>Student Organizations</a></li>
<li><a>Residence Life</a></li>
<li><a>Facilities</a></li>
<li><a>Food & Drink</a></li>
</ul>
</div><!--end inner-content-->
</div><!--end col-->
</div><!--end row-->
</div><!--end container-->
</div><!--end quick-links-->
this
将是点击的图像,而不是quickContent
的元素。您需要上升到容器,然后向下搜索相应的ul
。
quickContent.find("img").click(function() {
$(this).closest(".inner-content").find("ul").slideDown("slow");
}
或者,如果它们都是同一元素的子元素,则可以使用:
quickContent.find("img").click(function() {
$(this).siblings("ul").slideDown("slow");
}
您可以在
选择器中包含img
,例如:
var quickSection = $('.quick-links');
if (quickSection.is('*')) {
$('.quick-links .row .inner-content img').click(function() {
$(this).parents("h2").next("ul").slideDown("slow");
});
}
.parent() 将做到这一点,因为它将当前范围更改为包含您单击的图像的div。
var quickSection = $('.quick-links');
var quickContent = $('.quick-links .row .inner-content')
if ( quickSection.is('*') ) {
quickContent.find("img").click(function() {
$(this).parent().find("ul").slideDown("slow");
});
}
当您将
单击处理程序附加到元素时,$(this)
将引用单击的元素;在这种情况下,图像也是如此。由于你在quickContent
中有多个jQuery对象,你可能必须遍历DOM树才能找到你需要的对象。像这样:
quickContent.find("img").click(function(){
$(this).parents('.quick-links .row .inner-content').find("ul").slideDown("slow");
}
很可能有一种更有效的方法,具体取决于您的确切 DOM 结构。例如,jQuery函数.next()
、.prev()
或.siblings()
可能很有用。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 在另一个Find(..)的回调内部查找,如何逃离回调地狱
- 为什么我得到了一个“;未定义的“;使用“”从Find()返回值;这个“;论点
- jQuery 'this' 跟随一个 .find click 函数
- jQuery .each()、.find() 和 .append() 只在最后一个节点上工作
- jQuery.find() 返回一个对象,即使 DOM 中没有匹配的子元素
- 在使用window.find()搜索字符串的过程中,会出现一个对话框
- 从mongodb中的两个集合中的find生成一个json
- MongoDB=>findOne还是find查询下一个对象?(Meteor/React)
- 未捕获类型错误:$(..).find(..). hasclass(..).Show不是一个函数
- 是否调用$find是一个相对昂贵的操作
- 猫鼬,用find选择一个特定的字段
- jQuery抛出一个错误,认为element.find()不是一个函数
- 帆:如何从find函数返回一个值
- jquery find只返回一个元素(在Meteor中)
- jQuery find()方法不能只在一个类上工作
- Meteor:在MongoCollection.find()中的光标上迭代并打印一个字段
- AngularJS:为什么使用 ng-options 时$element.find('option') 返回一个空数组