1

html:

 <div class="a">

   <div class="g"></div>
   <a class="e">Link</a>

  <div class="g"></div>
   <a class="e">Link</a>

</div>

每当我点击链接时,我都想隐藏带有“g”类的 div。只有那个特定的链接。假设如果我点击第一个链接,那么第一个带有“g”类的 div 应该只隐藏。现在我已经完成了在这儿。

查询:

    $('.e').click(function(){
               c();
       });

    function c(){
          $(.g).hide();
      }

但这隐藏了“g”类的所有元素。

具有“g”类的 div 和链接都是由用户动态生成的,我不知道用户可以生成多少。

4

4 回答 4

2

当前,您正在调用$('.g').hide()它选择所有以 g 作为类的元素并将它们全部隐藏。

而是用于prev()选择要隐藏的元素

       $('.e').click(function(){
              jQuery(this).prev().hide();
       });

演示

根据评论更新:

您可以使用以下代码:

$('.e').click(function(){
              c(this);
       });

function c(element){
          $(element).prev().hide();
      }

现场演示

于 2012-04-29T17:31:57.397 回答
2

尝试这个:

$(".e").click(function(){
   $(this).closest("div.g").hide();
})

或者:

var elem = "";
$(".e").click(function(){
       elem = $(this).closest("div.g");
       c(elem);
    })

function c(elem) {
$(elem).hide();
}
于 2012-04-29T17:33:54.087 回答
1

使用函数 c():

$('.e').click(function(){
    c(this);
});

function c(element){
    $(element).prev().hide();
}

演示:http: //jsfiddle.net/NQYN4/3/

于 2012-04-29T17:37:37.017 回答
0

您可以使用 jQuery each() 方法来实现这一点,您的 HTML 保持不变,JavaScript 如下;

$(".e").each(function () {

  // $(this) refers to that particular link not all the links.
  $(this).click(function (e) {

    /**
     * as a precaution for preventing anchor
     * to redirect/scroll to location defined in "href" attribute
     */
    e.preventDefault();

    $(this).prev(".g").hide();
  });
});
于 2012-04-29T17:49:31.010 回答