【问题标题】:Add a class to a grandparent's child img给祖父母的孩子添加一个班级 img
【发布时间】:2023-03-23 02:57:02
【问题描述】:

我有一些带有复选框的图像。当我检查其中一个时,图像应该通过新类“change-img”进行更改。 这是一个代码:

<ul>
    <li class="tech-vis"><img class="tech-img" src="..." alt="..."/></li>
    <li class="check-tech"><input id="const-tech" class="checkbox-form inside"  type="checkbox" name="tech[]" value="value1" /></li>                                                    
</ul>
<ul>
    <li class="tech-vis"><img class="tech-img" src="..." alt="..."/></li>
    <li class="check-tech"><input id="const-tech" class="checkbox-form inside"  type="checkbox" name="tech[]" value="value2" /></li>                                                    
</ul>
... and etc.

还有一个脚本:

$("ul input[type=checkbox].inside").click(function() {
    if($(this).is(":checked")) {
        $(this).parents("ul img.tech-img").addClass("change-img");
    }
    else {
        $("img.tech-img").removeClass("change-img")
    }
});

我知道我错了,我在哪里添加一个类,但是我怎么能调用这个元素呢?

【问题讨论】:

    标签: jquery class parent


    【解决方案1】:

    使用 closest()parents(),将父 ul 与子 img 分开,例如:

    $(this).closest("ul").find('img.tech-img').addClass("change-img");
    //Or
    $(this).parents("ul").find('img.tech-img').addClass("change-img");
    

    注意:注意id 在同一个文档中应该是唯一的。

    希望这会有所帮助。

    $("ul input[type=checkbox].inside").click(function() {
      var parent = $(this).parents("ul");
    
      if($(this).is(":checked")) {
        parent.find('img.tech-img').addClass("change-img");
      }
      else {
        //Remove class from all img tags
        $("img.tech-img").removeClass("change-img"); 
    
        //Remove class from related img tag
        //parent.find('img.tech-img').removeClass("change-img"); 
      }
    });
    .change-img{
       background-color: yellow;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul>
      <li class="tech-vis"><img class="tech-img" src="http://hytorcatlantique.fr/wp-content/uploads/2014/11/android-icon.png" alt="..."/></li>
      <li class="check-tech"><input id="const-tech1" class="checkbox-form inside"  type="checkbox" name="tech[]" value="value1" /></li>                                                    
    </ul>
    <ul>
      <li class="tech-vis"><img class="tech-img" src="http://hytorcatlantique.fr/wp-content/uploads/2014/11/android-icon.png" alt="..."/></li>
      <li class="check-tech"><input id="const-tech2" class="checkbox-form inside"  type="checkbox" name="tech[]" value="value2" /></li>                                                    
    </ul>

    【讨论】:

    • @Tesla 另一个建议是不要对多个元素使用相同的 id。它可能会导致您出现 javascript 交互问题。
    • 是的,它奏效了。我知道唯一ID,但还是谢谢你。 Closest() 和 find() 解决了我的问题。非常感谢!
    猜你喜欢
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多