添加输入文本字段(使用jquery),当最后一个现有的输入被点击
Add input text field(using jquery) when last existing input is clicked
我有一个表单部分处理名为options的文本输入。
默认情况下,我提供了两个选项。我想添加一个选项字段时,最后一个被点击。
<input type='text' name='options[]' class='options'>
<br/>
<br/>
<input type='text' name='options[]' class='options'>
i tried
$(".options:last").click(function(){
$("#options").append("<br/><br/><input type='text' name='options[]' class='options'>");
})
第一次确实有效。但之后就不工作了。它不考虑由jquery添加的输入。所以它只工作,当我点击第二个选项。不是最后一个由jquery添加的。怎么做呢?
click()方法只将事件处理程序绑定到当前存在于DOM
中的匹配元素。
由于新的文本框是在之后动态添加的,因此它们没有单击处理程序。你要么必须手动绑定点击处理程序(,这是非常低效的),要么通过将事件处理程序绑定到静态父元素来使用事件委托。
假设#options
是一个静态容器元素,因为你附加了它,
您可以使用.on()方法将事件处理程序委托给它,如下所示
$('#options').on('click','.options:last',function(){
$(this).after("<br/><br/><input type='text' name='options[]' class='options'>");
})
动态添加元素。它不会获取第一个追加元素之后的最后一个元素。
所以使用事件委托为您的代码使用.on()
- Reference如果#options
元素是静态的,您可以在$('#options')
上使用$(document)
来委托它。
$(document).on('click','.options:last',function(){
$("#options").append("<br/><br/><input type='text' name='options[]' class='options'>");
})
你只需要绑定点击,即使使用.on
动态添加的元素,像下面:
$(document).on("click",".options:last",function(){
$("#options").append("<br/><br/><input type='text' name='options[]' class='options'>");
})
您需要在添加元素后再次将函数绑定到事件。
可能的方法是
function AppendToEnd()
{
$("#options").append("<br/><br/><input type='text' name='options[]' class='options'>");
$(".options:last").click(AppendToEnd()); // this will bind the function to the last element as before.
}
同样,您需要自己绑定事件,所以添加
$(".options:last").click(AppendToEnd());
您可能希望取消绑定其他先前添加的输入的单击事件,因为用户可能希望在编辑后对它们进行编辑,这将导致添加不必要的选项。
你也可以考虑用一些ID将这些选项包装在div中,因为使用ID选择器比使用类选择器要快得多。没有,我在加载时存储了选中的对象,我不需要稍后调用它,我可以重用我已经选择的对象,节省不必要的计算时间。
HTML<div id="option-wrapper">
<input type='text' name='options[]' class='options' />
<br/>
<br/>
<input type='text' name='options[]' class='options' />
</div>
JS
var wrapper = $("#option-wrapper"),
bindClickEvents = function () {
var options = $(".options",wrapper);
options.unbind("click");
options.last().on("click", function() {
$(this).after("<br/><br/><input type='text' name='options[]' class='options'>");
bindClickEvents();
});
};
bindClickEvents();
JS提琴:http://jsfiddle.net/JKurcik/HRg9M/
相关文章:
- 从输入值中删除最后一个单词
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- 如何在单击时从输入字段中删除最后一个字符
- 如何在单击按钮时获得最后一个焦点文本框输入
- JS:最后一个输入元素的名称(HTML/PHP)
- 使用dojo按键事件时无法避免最后一个字符输入
- 获取具有值的序列中最后一个输入字段的索引
- 使用 Java 脚本或 PHP 提交后保留输入框的最后一个值
- 当
- 中的最后一个输入具有值时,添加新的<输入>
- 删除输入的最后一个值
- 输入最后一个字段后自动提交/刷新信息路径表单
- 如何在用户完成第一个输入文本的键入后设置和聚焦最后一个输入文本
- React JS:setState 在最后一个输入时很晚
- JS/JQuery-如果空格是第一个和/或最后一个字符,则从输入字段中删除空格
- 我想根据他们输入的域验证电子邮件.正在检查最后一个域为.com
- 如何在文本输入字段中实现最后一个没有字母间距的字母
- jquery焦点,并在最后一个输入被填充后自动提交
- 选择集合中最后一个方括号输入元素
- Submit是获取输入的最后一个值
- 用Javascript输入最后一个单词