javascript - 有没有办法检查 div 是否包含 img,然后将其用作 onclick 事件的条件?

标签 javascript jquery html

所以,我知道这个问题可能听起来与许多其他问题非常相似,但我已经尝试了很多类似问题的其他解决方案,但它们似乎不起作用。也许我只是解释得不好,但我已经尝试了很多。

基本上,我想根据 div 是否已包含图像将图像移动到不同的 div。

我已经尝试了多种不同的方法来检查具有特定 id 的 div 是否包含 img .has()、.contains() 等,并且没有骰子。我不确定这只是语法问题还是什么问题。

HTML

    <div id="imgsDiv">
        <img src="assets/images/peas.jpeg" id="peas" class="imgStyles" alt="peas">
        <img src="assets/images/broccoli.jpeg" id="broccoli" class="imgStyles" alt="broccoli">
    </div> 

<div id="playerDiv">
        </div>

        <div id="computerDiv">
        </div>

jQuery/JS

$(".imgStyles").click(function (event) {
    if ($("#playerDiv:contains('img')")) {
        $(event.currentTarget).appendTo("#computerDiv");
        console.log("sucess");
    } else {
        $(event.currentTarget).appendTo("#playerDiv"); 
    }
})

基本上,我希望能够单击任何图像并将第一个图像转到#playerDiv,然后将之后单击的所有其他图像转到#computerDiv。现在,所有图像都只是将自己附加到 #computerDiv,即使 #playerDiv 开头没有图像。

最佳答案

您可以使用.length jQuery对象中的元素数量

  • if ($("#playerDiv").find("img").length)表示div中是否有img..如果div包含任何img则返回true..

  • 还有if ($("#playerDiv").find("img").length > 0)与上一篇相同。 0这是元素的数量

  • 尝试console.log($("#playerDiv").find("img").length)你就会明白了..

  • if ($("#playerDiv").has("img"))应该也可以工作,但是当你说并将第一张图像转到#playerDiv时,这样你就可以使用if ($("#playerDiv").find("img").length == 1)

$(".imgStyles").on('click' , function (event) {
    if ($("#playerDiv").find('img').length == 1) {
        $(this).appendTo("#computerDiv");
        console.log("To computerDiv");
    } else {
        $(this).appendTo("#playerDiv");
        console.log("To playerDiv");
    }
})
#playerDiv{
  background : red;
}
#computerDiv{
  background : yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="imgsDiv">
<img src="assets/images/peas.jpeg" id="peas" class="imgStyles" alt="peas">
<img src="assets/images/broccoli.jpeg" id="broccoli" class="imgStyles" alt="broccoli">
<img src="assets/images/peas.jpeg" id="peas" class="imgStyles" alt="peas">
<img src="assets/images/broccoli.jpeg" id="broccoli" class="imgStyles" alt="broccoli">

</div> 

<div id="playerDiv"></div>

<div id="computerDiv"></div>

  • 以及关于使用 .contains 选择包含指定文本的所有元素。 .. 所以它不适用于它适用于文本的元素

最后:如果您需要防止再次附加附加图像,您可以通过向附加图像添加一个类并使用 :not 来实现此目的。选择器

$(document).on('click' , ".imgStyles:not(.appended)" ,function (event) {
    if ($("#playerDiv").find('img').length == 1) {
        $(this).addClass('appended').appendTo("#computerDiv");
        console.log("To computerDiv");
    } else {
        $(this).addClass('appended').appendTo("#playerDiv");
        console.log("To playerDiv");
    }
})
#playerDiv{
  background : red;
}
#computerDiv{
  background : yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="imgsDiv">
<img src="assets/images/peas.jpeg" id="peas" class="imgStyles" alt="peas">
<img src="assets/images/broccoli.jpeg" id="broccoli" class="imgStyles" alt="broccoli">
<img src="assets/images/peas.jpeg" id="peas" class="imgStyles" alt="peas">
<img src="assets/images/broccoli.jpeg" id="broccoli" class="imgStyles" alt="broccoli">

</div> 

<div id="playerDiv"></div>

<div id="computerDiv"></div>

关于javascript - 有没有办法检查 div 是否包含 img,然后将其用作 onclick 事件的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56470438/

相关文章:

javascript - Uncaught ReferenceError : $ is not defined?

javascript - 如何在触发点击事件之前显示一个div

javascript - 在 React Native SectionList 中使用来自 Firebase 的数据。数据结构问题

javascript - Ajax 调用完成成功后,才真正完成调用?

jquery - 如何为固定标题和可滚动表格编写CSS

javascript - 5 秒后 Jquery 显示按钮

javascript - 按两次转义键即可恢复旧值 - Internet Explorer

javascript - 使用 momentJs 查看当前日期是否在几个月之间

html - 如何使用 Rails 在文本区域内显示 HTML

javascript - jQuery scrollTop 跳转到屏幕顶部