代码之家  ›  专栏  ›  技术社区  ›  Alex

如何获取$(this)选择器的子级?

  •  2106
  • Alex  · 技术社区  · 16 年前

    我有一个类似的布局:

    <div id="..."><img src="..."></div>
    

    希望使用jquery选择器选择子级 img 里面 div 点击。

    得到 div ,我有这个选择器:

    $(this)
    

    我怎样才能得到这个孩子 IMG 使用选择器?

    16 回复  |  直到 6 年前
        1
  •  2742
  •   gnarf    10 年前

    jquery构造函数接受名为 context 可用于重写所选内容的上下文。

    jQuery("img", this);
    

    与使用相同 .find() 这样地:

    jQuery(this).find("img");
    

    如果你想要的IMG是 只有 单击元素的直接后代,也可以使用 .children() :

    jQuery(this).children("img");
    
        2
  •  451
  •   philnash    16 年前

    你也可以用

    $(this).find('img');
    

    它会把所有的 img 是的后代 div

        3
  •  130
  •   rakslice    13 年前

    如果你需要第一个 img 就差一级了,你能做到的。

    $(this).children("img:first")
    
        4
  •  72
  •   Book Of Zeus jakob    13 年前

    如果DIV标记后紧跟img标记,则还可以使用:

    $(this).next();
    
        5
  •  57
  •   Rayron Victor    12 年前

    这个 直接的 儿童是

    $('> .child', this)
    
        6
  •  38
  •   Lalit Kumar Maurya    11 年前

    您可以像下面这样找到父DIV的所有img元素

    $(this).find('img') or $(this).children('img')
    

    如果你想要特定的img元素,你可以这样写

    $(this).children('img:nth(n)')  
    // where n is the child place in parent list start from 0 onwards
    

    您的DIV只包含一个img元素。所以下面这个是对的

     $(this).find("img").attr("alt")
                      OR
      $(this).children("img").attr("alt")
    

    但是如果您的DIV包含更多的img元素,如下所示

    <div class="mydiv">
        <img src="test.png" alt="3">
        <img src="test.png" alt="4">
    </div>
    

    然后您就不能使用上面的代码来查找第二个img元素的alt值。所以你可以试试这个:

     $(this).find("img:last-child").attr("alt")
                       OR
     $(this).children("img:last-child").attr("alt")
    

    这个例子展示了如何在父对象中找到实际对象的一般概念。 可以使用类来区分子对象。这很简单也很有趣。即

    <div class="mydiv">
        <img class='first' src="test.png" alt="3">
        <img class='second' src="test.png" alt="4">
    </div>
    

    您可以这样做:

     $(this).find(".first").attr("alt")
    

    更具体的是:

     $(this).find("img.first").attr("alt")
    

    您可以使用find或children作为上述代码。更多访问儿童 http://api.jquery.com/children/ 找到 http://api.jquery.com/find/ . 见例子 http://jsfiddle.net/lalitjs/Nx8a6/

        7
  •  31
  •   Oskar    9 年前

    在jquery中引用子级的方法。我在下面的jquery中总结了它:

    $(this).find("img"); // any img tag child or grandchild etc...   
    $(this).children("img"); //any img tag child that is direct descendant 
    $(this).find("img:first") //any img tag first child or first grandchild etc...
    $(this).children("img:first") //the first img tag  child that is direct descendant 
    $(this).children("img:nth-child(1)") //the img is first direct descendant child
    $(this).next(); //the img is first direct descendant child
    
        8
  •  30
  •   Adam    16 年前

    在不知道DIV的ID的情况下,我认为您可以这样选择IMG:

    $("#"+$(this).attr("id")+" img:first")
    
        9
  •  30
  •   BoltClock Alan H.    11 年前

    试试这个代码:

    $(this).children()[0]
    
        10
  •  21
  •   ann user874538    9 年前

    您可以使用以下任一方法:

    1查找():

    $(this).find('img');
    

    2个孩子():

    $(this).children('img');
    
        11
  •  19
  •   Thirumalai murugan JJacquelin    10 年前

    jQuery each 是一种选择:

    <div id="test">
        <img src="testing.png"/>
        <img src="testing1.png"/>
    </div>
    
    $('#test img').each(function(){
        console.log($(this).attr('src'));
    });
    
        12
  •  13
  •   Dennis R    10 年前

    你可以使用 Child Selecor 引用父级中可用的子元素。

    $(' > img', this).attr("src");
    

    下面是如果你没有参考 $(this) 你想参考一下 img 在A中可用 div 其他功能。

     $('#divid > img').attr("src");
    
        13
  •  10
  •   Nilesh Thakkar    9 年前

    同样,这也应该起作用:

    $("#id img")
    
        14
  •  5
  •   RPichioli Vikash Sharma    7 年前

    这是一个函数代码,您可以运行它(这是一个简单的演示)。

    当您单击该DIV时,您将从一些不同的方法中获得图像,在这种情况下,“this”是DIV。

    $(document).ready(function() {
      // When you click the DIV, you take it with "this"
      $('#my_div').click(function() {
        console.info('Initializing the tests..');
        console.log('Method #1: '+$(this).children('img'));
        console.log('Method #2: '+$(this).find('img'));
        // Here, i'm selecting the first ocorrence of <IMG>
        console.log('Method #3: '+$(this).find('img:eq(0)'));
      });
    });
    .the_div{
      background-color: yellow;
      width: 100%;
      height: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div id="my_div" class="the_div">
      <img src="...">
    </div>

    希望它有帮助!

        15
  •  4
  •   Jason Williams    7 年前

    你可能有0对多 <img> 标签在您的 <div> .

    要查找元素,请使用 .find() .

    为了保证代码的安全,请使用 .each() .

    使用 查找() () 在0的情况下一起防止空引用错误 <IMG & GT; 元素,同时允许处理多个 <IMG & GT; 元素。

    // Set the click handler on your div
    $("body").off("click", "#mydiv").on("click", "#mydiv", function() {
    
      // Find the image using.find() and .each()
      $(this).find("img").each(function() {
      
            var img = this;  // "this" is, now, scoped to the image element
            
            // Do something with the image
            $(this).animate({
              width: ($(this).width() > 100 ? 100 : $(this).width() + 100) + "px"
            }, 500);
            
      });
      
    });
    #mydiv {
      text-align: center;
      vertical-align: middle;
      background-color: #000000;
      cursor: pointer;
      padding: 50px;
      
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <div id="mydiv">
      <img src="" width="100" height="100"/>
    </div>
        16
  •  2
  •   Sumit Lahiri    7 年前

    $(document).ready(function() {
      // When you click the DIV, you take it with "this"
      $('#my_div').click(function() {
        console.info('Initializing the tests..');
        console.log('Method #1: '+$(this).children('img'));
        console.log('Method #2: '+$(this).find('img'));
        // Here, i'm selecting the first ocorrence of <IMG>
        console.log('Method #3: '+$(this).find('img:eq(0)'));
      });
    });
    .the_div{
      background-color: yellow;
      width: 100%;
      height: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div id="my_div" class="the_div">
      <img src="...">
    </div>