jq中的delegate和each方法

今天偶然见到这两个方法,有点忘记所以上网查了下,再加上自己总结下今天分享给大家。
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
delegate()他是事件绑定的一种,其实事件绑定有很多,比如说click,bind,on。
需要注意的是delegate()是指定元素的子元素添加一个多个事件。
基本的格式为
被选的父元素。delegate()(“选择器”,“事件”,“函数”其中函数和选择器必须填)
同样的 于此undelegate是事件的解绑,解绑父元素的子元素的方法。
比如说$(“ul”).undelegate() 解绑ul所有子元素事件。
我们看下例子:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("div").delegate("button","click",function(){
    $("p").slideToggle();
  });
});
</script>
</head>
<body>
<div style="background-color:red">
<p>这是一个段落。</p>
<button>请点击这里</button>
</div>

</body>
</html>

通过例子,大家可以去试一下,深刻体会下delegate的用法。

each() 方法规定为每个匹配元素规定运行的函数。
提示:返回 false 可用于及早停止循环。
我理解以每一个匹配元素上下执行一个函数
each(index下标,DOM节点遍历每个标签当前遍历节点)
$(selector).each(function(index,element))
function(index,element)
必需。为每个匹配元素规定运行的函数。
index - 选择器的 index 位置
element - 当前的元素(也可使用 “this” 选择器)

请看例子:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("li").each(function(){
      alert($(this).text())
    });
  });
});
</script>
</head>
<body>
<button>输出每个列表项的值</button>
<ul>
<li>Coffee</li>
<li>Milk</li>
<li>Soda</li>
</ul>
</body>
</html>

他会弹3次框,每次都是li里的内容,也就是他会遍历每个li节点。请大家慢慢去体会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:在Qt使用model和delegate可以实现高效的数据显示和修改。以下是使用模型和委托的步骤: 1. 创建一个继承自QAbstractItemModel类的自定义模型。 2. 实现以下方法: a. rowCount()和columnCount():分别返回数据项的行数和列数。 b. data():返回指定索引的数据项。 c. setData():设置指定索引的数据项的值。 d. flags():返回指定索引的数据项的标志,如是否可编辑、是否可选等。 e. index()和parent():返回指定行和列的索引和父索引。 f. headerData():返回表头数据。 3. 创建一个继承自QStyledItemDelegate类的自定义委托。 4. 实现以下方法: a. paint():绘制表格项。 b. createEditor():创建编辑器。 c. setEditorData():将数据传输到编辑器。 d. setModelData():从编辑器获取数据。 e. updateEditorGeometry():设置编辑器位置和大小。 5. 在需要使用表格视图的地方,创建一个QTableView对象,并设置model和delegate。 6. 将数据加载到模型,可以使用setRowCount()、setColumnCount()、setData()等方法。 7. 对表格项进行修改时,调用setData()方法,该方法调用模型的setData()方法,最终数据被保存在模型。 8. 在需要更新视图时,可以使用update()方法进行刷新。 注意事项: 1. model和delegate的生命周期需要保持一致,否则会导致内存泄漏。 2. 在使用自定义委托时,需要在model设置制定列的editable属性为true,否则无法触发编辑行为。 3. 在使用自定义委托时,需要考虑数据类型和格式,以便正确地显示和修改数据。 4. 在使用自定义委托时,需要考虑委托的样式和交互方式,以便提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值