单击的特定类的jquery调用函数

时间:2012-04-29 17:29:10

标签: jquery html

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。只有那个特定的链接。假设如果我点击第一个链接那么第一个div与类“g”应该只隐藏。现在我已经完成了。

Jquery的:

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

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

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

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

4 个答案:

答案 0 :(得分:2)

Currenctly你正在调用$('.g').hide(),它选择所有带有g作为类的元素并将它们全部隐藏起来。

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

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

Demo

根据评论更新:

您可以使用此代码:

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

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

Live Demo

答案 1 :(得分: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();
}

答案 2 :(得分:1)

使用函数c():

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

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

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

答案 3 :(得分: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();
  });
});