时间:2021-05-26
jQuery有一个很好用的delegate(事件委派)功能,可以给当前以及将来(动态添加)的元素绑定一个事件处理函数。
比如下面的例子,动态添加一个输入文本框后,我想让所有文本框(不管是不是动态添加的)在获取焦点时,自动转大写。
复制代码 代码如下:
<!doctype html>
<html>
<head>
<title>delegate测试</title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.js"></script>
<style type="text/css">
*{padding:0;margin:0;list-style:none;margin:5px}
</style>
<script type="text/javascript">
//动态添加一行文本输入框
function addInput(){
$("#ulTarget").append("<li><input type=\"text\" value=\"aaaaaa\"/></li>");
}
$().ready(function(){
$("#ulTarget").delegate(":text","focus",function(){
$(this).val($(this).val().toUpperCase());
});
})
</script>
</head>
<body>
<ul id="ulTarget">
<li><input type="text" value="123456abc"/></li>
<li><input type="text" value="123456abc"/></li>
<li><input type="text" value="123456abc"/></li>
<li><input type="text" value="123456abc"/></li>
</ul>
<button id="btnAdd" onclick="addInput()">add input</button>
</body>
</html>
接下来,我还想加点小功能,在获取焦点时,还要让文本框自动全选。
复制代码 代码如下:
$().ready(function(){
$("#ulTarget").delegate(":text","focus",function(){
$(this).val($(this).val().toUpperCase()).select();
});
})
但是实际测下来,.select()死活就是不起作用,无奈请出setTimeout
复制代码 代码如下:
$().ready(function(){
$("#ulTarget").delegate(":text","focus",function(){
var jqObj = $(this);
jqObj.val(jqObj.val().toUpperCase());
setTimeout(function(){jqObj.select();},100);
});
})
解决了.
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用jquery添加新元素很容易,面对jqueryappend动态添加的元素事件on不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到
怎么解决Win7关闭锁屏不起作用?很多小伙伴问win7系统关闭锁屏的问题,关闭锁屏不起作用让我们使用起来非常不方便,这篇文章主要讲解怎么解决这个这个问题,希望对
刚创建的元素,使用jQuery的each方法来遍历,有时候会不起作用。原因不用多说,经常使用javascript的人应该都会知道,解决方案大致有2种:1、刚创建
使用javascript动态改变select的selected属性时,发现不起作用。某个hello明明有selected='selected'但是选中的却不是它
1frommultiprocessingimportPool,Queue。其中Queue在Pool中不起作用,具体原因未明。解决方案:如果要用Pool创建进程,