Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递对元素的引用而不指定id_Javascript_Jquery - Fatal编程技术网

Javascript 传递对元素的引用而不指定id

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

我希望几个元素使用相同的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" 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);