首页 文章

如何获得$(this)选择器的子节点?

提问于
浏览
2083

我的布局类似于:

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

并希望使用jQuery选择器在 div 点击内选择子 img .

要获得 div ,我有这个选择器:

$(this)

如何使用选择器让孩子 img

16 回答

  • 71

    如果您的DIV标记后面紧跟IMG标记,您还可以使用:

    $(this).next();
    
  • 2717

    您可以使用Child Selecor引用父级中可用的子元素 .

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

    以下是如果您没有引用 $(this) 并且您想在 div 中引用其他函数中的 img .

    $('#divid > img').attr("src");
    
  • 27

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

    $("#"+$(this).attr("id")+" img:first")
    
  • 56

    您的 <div> 中可能包含0到多个 <img> 标签 .

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

    为确保您的代码安全,请使用 .each() .

    同时使用 .find().each() 可防止0 <img> 元素的空引用错误,同时还允许处理多个 <img> 元素 .

    // 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>
    
  • 37

    这应该工作:

    $("#id img")
    
  • 29

    这是一个功能代码,你可以运行它(这是一个简单的演示) .

    单击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>
    

    希望能帮助到你!

  • 3

    直接的孩子是

    $('> .child', this)
    
  • 448

    试试这段代码:

    $(this).children()[0]
    
  • 9

    你也可以使用

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

    这将返回作为 div 的后代的所有 img

  • 12

    您可以在下面找到父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")
    

    您可以使用上面代码中的查找或子项 . 更多访问儿童http://api.jquery.com/children/和查找http://api.jquery.com/find/ . 见例子http://jsfiddle.net/lalitjs/Nx8a6/

  • 29

    jQuery的 each 是一个选项:

    <div id="test">
        <img src="testing.png"/>
        <img src="testing1.png"/>
    </div>
    
    $('#test img').each(function(){
        console.log($(this).attr('src'));
    });
    
  • 20

    jQuery构造函数接受名为context的第二个参数,该参数可用于覆盖选择的上下文 .

    jQuery("img", this);
    

    这与使用.find()相同:

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

    如果你想要的imgs是 only 被点击元素的直接后代,你也可以使用.children()

    jQuery(this).children("img");
    
  • 17

    如果你需要得到第一个 img ,它只是一个级别,你可以做到

    $(this).children("img:first")
    
  • 4

    在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
    
  • 128

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

    1 find():

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

    2 children():

    $(this).children('img');
    
  • 1
    $(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>
    

相关问题