可以使用$(this).parent()。parent()?

时间:2012-07-13 19:06:48

标签: javascript jquery css

我有以下HTML:

<div id="wrapper">
      <div class="p1">
          <a href="#" class="quickFlipCta"><img src="Test Pictures/QuestionMark.gif" /></a>
      </div>

      <div class="p2">
          <a href="#" class="quickFlipCta"><img src="Test Pictures/flower.gif" /></a>
      </div>
</div>

我有一个在用户点击链接时启动的功能:

$('a').click(function(){
   //some code here
});

在函数中,我想访问“wrapper”div。这样做的最佳方式是什么?我试过了:

$('a').click(function(){
     $(this).parent().parent().
     //modification to wrapper
    });

但这似乎不起作用。

3 个答案:

答案 0 :(得分:7)

这完全有效,你确定你的点击功能正在被调用吗?

最好的方法是使用id。只需使用$("#wrapper")

即可

你也可以像.closest一样使用$(this).closest('#wrapper'),虽然我建议使用id方法而不是.closest

通过调用alert或console.log来检查您的点击功能是否正在调用

$('a').click(function(){
   alert("Called");
   console.log("Called");
});

答案 1 :(得分:2)

虽然您可以使用链式父$(this).parent().parent()来遍历树。

最好使用最接近遍历查找匹配选择器的最近父级,因此标记的唯一要求是链接位于div#wrapper内。

  $('a').click(function(){
   $(this).closest('div#wrapper')
   //modification to wrapper
  });

答案 2 :(得分:2)

基于your comment我假设您正在尝试将css更改添加到动画队列中。问题是无法做到这一点,因为css()调用没有动画,所以css()调用都会立即发生。

通过执行以下操作,您仍然可以完成您正在尝试的内容:

$('#wrapper').css('visibility','hidden').delay(500).queue(function(next) {
    $('#wrapper').css('visibility','visible');
    next()
});

see jQuery delay()

DEMO