jQuery获取children元素的属性

jQuery get attribute of children element

本文关键字:属性 元素 children 获取 jQuery      更新时间:2023-09-26

我在获取子元素的属性方面遇到了一个问题。

$ = jQuery;
$(document).ready(function(){
    //var cat =  $(".bear_image").children("img").attr("alt");
    var abs = $("li");
    $(abs).on("click", ".first", function(){
        var cat = $(this).children(".bear_image img");
        console.log(cat.attr("alt"));
    });
});

它显示未定义。

这是我的php代码:

    <li>
        <input type="hidden" name="bear-id" value=<?php echo $bears['id']; ?>>
        <div class="bear_image"><img src="<?php echo $bears['nuotrauka']['url'];?>" alt=<?php echo $bears['id']; ?>></div>
        <div class="icons">
            <div class="first" id="1"><?php echo '<img src="' . content_url( '/themes/NutMEDIA/images/bow.png', __FILE__ ) . '" > '; ?></div>
            <div class="second" id="2" ><?php echo '<img src="' . content_url( '/themes/NutMEDIA/images/tie.png', __FILE__ ) . '" > '; ?></div>
            <div class="third" id="3"><?php echo '<img src="' . content_url( '/themes/NutMEDIA/images/heart.png', __FILE__ ) . '" > '; ?></div>
        </div>
        <div style="clear:both;"></div>
        <p class="bear_description"><?php echo $bears['aprasymas'];?></p>
    </li>

我需要输出.bear_image img的alt

你可以这样做。。。

单击后,遍历父li,然后找到.bear_image

$(abs).on("click", ".first", function(){
   var cat = $(this).parents('li').find('.bear_image').attr('alt');
});

onclick闭包函数中的this.firstdiv。此div不包含任何类别为.bear_image的元素。

如果从选择器中删除.bear_image,它应该在.first分区中找到img

$ = jQuery;
$(document).ready(function(){
    //var cat =  $(".bear_image").children("img").attr("alt");
    var abs = $("li");
    $(abs).on("click", ".first", function(){
        var cat = $(this).children("img");
        console.log(cat.attr("alt"));
    });
});

.bear_img不是.first的子级,因此您必须进行一点遍历:

var abs = $("li");
$(abs).on("click", ".first", function () {
    var cat = $(this).closest(abs).find(".bear_image img");
    console.log(cat.attr("alt"));
});

在这里我找到最接近的列表元素祖先,然后找到祖先的.bear_image子元素。

这个演示(去掉了PHP代码)展示了它是如何工作的。

代码中的以下表达式表示您正在'li'容器内的类'.first'上委派单击处理程序。

var abs = $("li");
$(abs).on("click", ".first", function(){ 

first没有bear_image有一个子类。

您需要使用closest函数跳到类为bear-image的元素,然后找到img元素。

var abs = $("li");
    $(abs).on("click", ".first", function(){
            var cat = $(this).closest('.bear_image').find("img"); 
            console.log(cat.attr("alt"));
        });

您的$(this)$.on()函数内更改范围:

尝试:

$ = jQuery;
$(document).ready(function(){
    //var cat =  $(".bear_image").children("img").attr("alt");
    var abs = $("li");
    abs.on("click", ".first", function(){
        var cat = $(this).closest('li').children(".bear_image img");
        console.log(cat);
    });
});