Javascript 传递对元素的引用而不指定id
我希望几个元素使用相同的onclick处理程序,因此我有:Javascript 传递对元素的引用而不指定id,javascript,jquery,Javascript,Jquery,我希望几个元素使用相同的onclick处理程序,因此我有: function close_div() { $(this).remove(); } <div class="closeX" onclick="close_div()">The first div</div> <div class="closeX" onclick="close_div()"The second div</div> <div class="closeX" oncl
function close_div() {
$(this).remove();
}
<div class="closeX" onclick="close_div()">The first div</div>
<div class="closeX" onclick="close_div()"The second div</div>
<div class="closeX" onclick="close_div()"The third div</div>
函数关闭\u div(){
$(this.remove();
}
第一组
功能关闭分区(el){
$(el).remove();
}
第一组
更好的是,不要使用内联处理程序
$('.closeX').on('click', function(e){
$(this).remove();
});
我可能猜您是在动态创建这些元素,这就是为什么您希望使用内联处理程序的原因——但在分离行为和内容方面,我们仍然有更好的解决方案。
这叫做授权
基本上,如果要动态添加这些元素,那么DOM中的某个地方有一个静态祖先,关键是要为其附加一个处理程序
例如:
$('#ancestor-container').on('click', '.closeX', function(e){
$(this).remove();
});
删除内联事件处理并分配如下内容
$(".closeX").on("click", close_div);
+1.自然的方式。但是,在jQuery 1.9+中,.on()
需要在事件名称后添加上下文。它也可以设置为null
。因此,$('.closeX')。在('click',null,函数(e)上{…
@majidfoulapour-哇,真的吗?我想我显示了我还没有更新到1.9!我现在会阅读文档,但是如果你是正确的,我会更新的,谢谢。@majidfoulapour-你有关于这个的文档链接吗?说它仍然是一个可选参数…它是可选的-我的错。不久前我不得不替换.live()
在一些插件中使用.on()
并在博客上阅读,您需要在事件名称后使用选择器。是的,您是对的。我正在动态创建元素,以便它们在准备运行时不在那里。我不想为我创建的每个元素都添加ID。您的想法是将模板函数与on()绑定吗对我来说是新的,看起来是一个很好的解决方案,但是Arthur的解决方案只是从内联代码中传递this关键字更清晰,并且做了技巧-div class=“closeX”onclick=“close_div(this)”>第一个div,所以这就是我要做的。但是谢谢你教我你的方法。谢谢。这正是我所要求的。
$(".closeX").on("click", close_div);