题
我试图创建一个新的div每一个文本字段包含在最后一个div时间失去焦点,但只有当第一个div文本字段失去焦点(而不是上次的)添加一个新的div。
下面是我的代码:
$(function() {
$(':text:last').blur(function() {
$('<div class="line"><span>data: </span><input type="text"/></div>')
.appendTo($('#lineStack'));
});
});
HTML:
<div id="lineStack">
<div class="line">
<span>data: </span><input type="text" />
</div>
</div>
回答:感谢尼克!你的回答工作。我一直在努力,以纪念你的岗位作为答案,但它不工作。不知道为什么:)
解决方案
可以做到这一点,而不是(需要的jQuery 1.4+,否则blur
气泡不被处理):
$(function() {
$(':text:last').live('blur', function() {
$('#lineStack').append('<div class="line"><span>data: </span><input type="text"/></div>');
});
});
您当前选择获取元素和重视的事件为是元素(其他人不存在尚未,所以它的:last
)。你想要做的是有模糊火不管什么时候,如果它是最后一个加入的元素,.live()
会处理的。 在这里看到的工作示例。
其他提示
当该事件的分配选择器仅被评估。尝试类似
$(function() {
$(':text').live("blur", function() {
if ($(this).is(':last')){
$('<div class="line"><span>data: </span><input type="text"/></div>').appendTo('#lineStack');
}
});
});
这样,每次:文本获取事件(我们使用现场功能,以确保即在创建时它会自动分配给新的元素),但是我们使用就是功能请确保选择了一个真的是最后一个。
(I也摆脱了在appendTo。jQuery函数像appendTo冗余$
呼叫可以采取一个选择字符串作为参数的。)
不隶属于 StackOverflow