JQuery没有't更新:动态添加元素的最后一个筛选器
JQuery Doesn't Update :last Filter for Dynamically Added Elements
如果以前有人问过这个问题,我很抱歉,但我有点不知所措。我正在创建一个JavaScript函数,以便在用户关注特定HTML文本输入时动态添加表单输入(因为我们可以选择接受多个值)。我认为这样做比从下拉菜单中选择所需的输入量更容易。
以下是我如何添加新的表单输入:
$("input[type=text]").filter(":regex(id, roe[0-9])").filter(":last").on("focus", function() {
// Add in new elements here
}
当我刷新页面,并专注于ID为"roe0"的初始文本输入时,JQuery会按照我的意愿生成一个新的输入。然而,当我专注于新生成的输入时,什么都没有发生。然后,我必须重新关注原始的$(#roe0)
输入,以生成新的文本输入。
有人知道解决这个问题的办法吗?我们将非常感谢您的任何帮助!
它将只应用一次,并在应用时应用于最后一个元素。您需要将其重新应用于新创建的元素。这将是一个使用jQuerys .one()
事件绑定器的好情况。因为一旦事件第一次触发(一次),就必须删除元素上的绑定。
好吧,事情是你选择一个元素(加载页面时的最后一个),并将事件处理程序附加到它上。然后什么都不做,所以你创建的任何新元素都不会有这种事件处理是有道理的。
我想做的是这样的事情:
function createNewElement(e) {
var newElement = jQuery('<input />');
// Whatever logic you have to append the new input and such
newElement.one("focus", createNewElement);
}
$("input[type=text]").filter(":regex(id, roe[0-9])").filter(":last").one("focus", createNewElement);
这样,当你创建一个新元素时,你就把同一个事件处理程序附加到它上
正如在另一个答案中所说,使用one
而不是on
将是好的。一旦执行一次,它就会分离事件处理程序(这很好,因为新元素现在应该是带有事件处理程序的元素)
相关文章:
- 如何将html元素添加到tampermonkey中
- 如何将html元素添加为生成的内容
- 如何向Selectize元素添加渲染和创建方法
- 向html选择元素添加选项
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何将新的键/值对元素添加到现有数组
- 使用docment.createElement向元素添加选项
- ng重复向一个元素添加条件类
- 为li元素添加标题
- 向ckeditor中的多个元素添加内联样式
- Javascript 向影子根中的自定义元素添加函数
- 将伪元素添加到<文本区域>
- 如果类只包含一个特定数字,则向元素添加类
- DOM:将空元素添加到 DOM 和页面重排
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 通过 ajax 使用自定义滚动条向元素添加内容
- 是否可以用D3将svg元素添加到开放层映射中
- 如何将元素添加到动态数组并排除现有元素
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- 将图像元素添加到<a>标签