繁体   English   中英

jQuery向上一级和.find()

[英]jQuery up one level and .find()

我正在学习jQuery,选择器有这个小问题。

这是我的DOM结构:

 <li>
   <header class="title">
     <span>Text</span>
     <a href="#work-1">My trigger</a>
   </header>
   <div id="work-1">
     <div class="description">
       <p>some shit about the work</p>
     </div>
     <div class="carousel">
       <img/>
       <img/>
       <img/>
       ...
     </div>
   </div>
 </li>

好。 它是一个简单的清单,与我的作品有很多联系。 每个项目都有其说明,并在轮播上带有一些图片。

当我单击链接时,我想在jquery中创建一个获取轮播的变量。 我写这个,但不起作用:

$('a').click(function(e){
  var href = $(e.target).attr('href');
  // this is to make my div#work toggle from display:none to block.

  var carousel = $(href).find('.carousel');
  // this is the wrong code. I cant reach the carousel from there.
});

感谢帮助!

这应该工作:

$('a').click(function(e){
  var carousel = this.parents('li').find('.carousel');
});

在点击处理程序中,“ this”是指被点击的A元素。 找到被单击的A元素的父元素的LI元素,然后搜索作为该LI元素的子元素的轮播。

用它代替,轮播其不同的元素

$('.carousel')

您必须返回两次(使用.parent() ),或使用.parents直到找到li标签。

 $('a').click(function(){ var href = $(this).attr('href'), li = $(this).parents('li'), carousel = li.find(href).find('.carousel'); console.log(carousel); carousel.css('background-color', 'red'); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li> <header class="title"> <span>Text</span> <a href="#work-1">My trigger</a> </header> <div id="work-1"> <div class="description"> <p>some shit about the work</p> </div> <div class="carousel"> <img/> <img/> <img/> </div> </div> </li> </ul> 

顺便说一句,您的脚本也适用于我:
https://jsfiddle.net/rozgwq8e/

但是您可以使用$(this)代替e.target。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM