自动将事件处理程序分配给新元素
Automatically assign event handler to new element
>假设我有一些这样的代码,它被调用$(document).ready()
$(".someClass").click(function(){
//do something
});
稍后我有一些jquery来创建带有类someClass
的元素。无论如何可以从上面自动附加单击还是我必须再次手动附加它?
是的。这是可能的。
$("body").on("click", ".someClass", function() {
// ...
});
使用最新版本的 jquery 和 on
$(document).on('click', '.someClass', function(e){
//do something
});
Live
已弃用,但无论如何您都可以使用它(不推荐)。
$('.someClass').live('click', function(e){
//do something
});
有 live
,它也侦听新元素
$(".someClass").live('click', function(){
//do something
});
但是,从jquery 1.7开始,它已被弃用。建议改用on
。
但是为了使用on
,你需要一个容器来容纳要绑定处理程序的元素。当然,您可以使用body
或document
但最好使用更具体的元素
$(".someClassContainer").on('click', '.someClass' function(){
//do something
});
有两种简单的方法可以做到这一点,第一种是使用 on()
:
$(".someClassParentElementPresentInTheDOMonDOMReady").on('click','.someClass',
function(){
//do something
});
另一种是在创建新元素时简单地分配点击处理程序;我不知道你是怎么做到的,但下面是一个例子:
$('#addElement').click(
function(){
var newElem = $('<div />',{'class' : 'someClass'}).click(function(){
// do something }).appendTo('.someClassParentElementPresentInTheDOMonDOMReady');
引用:
-
on()
.
相关文章:
- 为什么可以't我访问Angular创建的新DOM元素
- 如何在数据数组的每次迭代中创建一个内容为“i+1”的新 HTML 元素
- 通过 jQuery 添加新记录元素
- 在 jquery 可排序后定义
- 元素
- 元素的索引
- 元素
- 单击新 DOM 元素不起作用的事件
- 固定添加新消息(元素)后的位置视图内容
- jQuery 委托加载新创建元素的事件处理程序
- React不是更新元素,而是用相同的reactid创建新的元素
- "$(文件);在事件stopPropagation之后不触发$(a) 在“;而不触发新的元素
- 新html元素的旧javascript函数
- 无法获取新创建元素的高度
- DOM中的新SVG元素,通过JavaScript添加,直到鼠标up才呈现
- 从页面加载时的新输入元素获取值
- AngularJS函数不知道$compile后的新dom元素
- 为什么我可以't为我的新select元素创建ID吗
- 通过JavaScript/jQuery将页面保存为包含新添加元素的HTML文件
- 如何在添加新的元素集之前删除以前创建的元素
- 为什么Capybara不匹配AJAX调用后插入的新DOM元素
- 新创建元素上的Javascript onclick事件
- 在不添加新标签/元素的情况下向属性添加描述(用于屏幕阅读器)