jquery - 如何在动态元素中应用mouseleave?
问题描述
PS:我不确定要在标题中添加什么,所以请阅读。
我有使用div
元素创建的表。该表是作为服务器端的结果动态创建的。在表格内,每一行都有dropdown box
并且它们都被隐藏了,我想在以下dropdown box
情况下显示它们:
- 表格行是悬停和
- 单击表格行内的按钮,
当鼠标离开表格行时,我想隐藏dropdown box
.
我知道可以使用 来完成on
,但在我的情况下,dropdown box
只有当鼠标离开表的父级时才会隐藏。
这是表父级的代码段
<div id="table-parent">
<!--Table will be insert here-->
</div>
这是jquery的代码
$('div#table-parent').on('mouseover','.div-table-row', function(){
var actionButton = $(this).find('.btn-show-dropdown');
var tableRow = this;
$(actionButton).on('click', function () {
$(tableRow).find('.dropdown-box').css('display', 'block');
});
}).mouseleave(function () {
$(this).find('.dropdown-box').css('display', 'none');
});
这是将插入的表格片段table-parent
<div class="table">
<div class="div-table-row row-item row-item-dropdown">
<div class="div-table-col col1">
<p>Some text here</p>
</div>
<div class="div-table-col col2">
<p>Some text here</p>
</div>
<div class="div-table-col col3">
<a href="#" class="btn-show-dropdown">Click to show dropdown box</a>
</div>
<div class="dropdown-box" style="display: none;">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
</ul>
</div>
</div>
<div class="div-table-row row-item row-item-dropdown">
<div class="div-table-col col1">
<p>Some text here</p>
</div>
<div class="div-table-col col2">
<p>Some text here</p>
</div>
<div class="div-table-col col3">
<a href="#" class="btn-show-dropdown">Click to show dropdown box</a>
</div>
<div class="dropdown-box" style="display: none;">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
</ul>
</div>
</div>
....
....
....
</div>
解决方案
您可以将多个事件绑定到一个元素。看看我的代码,也许它可以帮助你。
$('div#table-parent').on('mouseover mouseleave click', '.div-table-row', function(event) {
if(event.type == "mouseleave"){
$(this).find('.dropdown-box').hide()
}
else{
$(this).find('.dropdown-box').show();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="table-parent">
<div class="table">
<div class="div-table-row row-item row-item-dropdown">
<div class="div-table-col col1">
<p>Some text here</p>
</div>
<div class="div-table-col col2">
<p>Some text here</p>
</div>
<div class="div-table-col col3">
<a href="#" class="btn-show-dropdown">Click to show dropdown box</a>
</div>
<div class="dropdown-box" style="display: none;">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
</ul>
</div>
</div>
<div class="div-table-row row-item row-item-dropdown">
<div class="div-table-col col1">
<p>Some text here</p>
</div>
<div class="div-table-col col2">
<p>Some text here</p>
</div>
<div class="div-table-col col3">
<a href="#" class="btn-show-dropdown">Click to show dropdown box</a>
</div>
<div class="dropdown-box" style="display: none;">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
</ul>
</div>
</div>
</div>
</div>
推荐阅读
- c# - EF Core 实体未添加到数据库
- ios - 全新安装时启动呼叫事务总是失败,Callkit iOS
- arrays - 如何在 Swift 4 中将金字塔类型的字符串转换为双精度数组
- apache-spark - SparkR org.apache.spark.SparkException:R 工作人员意外退出
- java - 获取枚举值数组少指定项
- c++ - 在 QGraphicsScene 中通过鼠标位置获取 QGraphicsItem
- c++ - 如何从终端分离,以便 git 中的 post-receive 钩子完成
- python - Keras Sequential - ValueError:检查目标时出错:预期dense_3具有形状(无,45)但得到的数组具有形状(2868700,1)
- java - 运行来自多个版本但具有相同名称和相同类名的几个 jar
- android - 为什么我不能使用 if 或打开 JSONObject?