jQuery有一个很好用的delegate(事件委派)功能,可以给当前以及将来(动态添加)的元素绑定一个事件处理函数。 比如下面的例子,动态添加一个输入文本框后,我想让所有文本框(不管是不是动态添加的)在获取焦点时,自动转大写。 复制代码 代码如下: delegate测试 <BR>*{padding:0;margin:0;list-style:none;margin:5px} <BR> <BR>//动态添加一行文本输入框<BR>function addInput(){ <BR> $("#ulTarget").append("<li><input type=\"text\" value=\"aaaaaa\"/>"); <BR>} $().ready(function(){ $("#ulTarget").delegate(":text","focus",function(){$(this).val($(this).val().toUpperCase()); }); }) add input 接下来,我还想加点小功能,在获取焦点时,还要让文本框自动全选。 复制代码 代码如下: $().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); }); }) 解决了.