javascript - 获取最近 Div 的 ID 不工作两次

标签 javascript jquery

我正在处理一个关闭按钮,并且正在使用“onclick”。当用户按下按钮时,我尝试将父 ID 的显示值设置为“无”。就像下面这样。

function displayNone() {
    var id= $('.btnClose').closest('div').attr('id');
    $('#'+id).css('display','none');
}


<div class="popup" id="dc-16-decision">
    <a href="#" onclick="displayNone();" class="btnClose">X</a>

</div>

<div class="popup" id="dc-16-implementation">
    <a href="#" onclick="displayNone();" class="btnClose">X</a>
</div>

我能够通过第一个链接使其工作一次,但之后的任何内容都不起作用。因此,我对 JsFiddle 进行了测试,发现当我单击第二个链接时,它仍然返回第一个链接的父 ID,而不是第二个链接的父 ID。我对此很陌生,不确定我做错了什么。我尝试使用 $(this) 而不是 $('.btnClose') 但它返回“未定义”。

http://jsfiddle.net/5x7g96hu/

<script>
    function test() {
     var name = $('.btnClose').closest('div').attr('id');
    console.log(name);
}
</script>

<div class="popup" id="dc-16-decision">
    <a href="#" onclick="test();" class="btnClose">X</a>

</div>

<div class="popup" id="dc-16-implementation">
    <a href="#" onclick="test();" class="btnClose">X</a>
</div>

最佳答案

您需要使用关键字 this 将点击元素上下文传递给点击处理程序,以定位当前点击的元素:

脚本:

<script>
function test(obj) {
  var name = $(obj).closest('div').attr('id');
  console.log(name);
}
</script>

HTML:

 <div class="popup" id="dc-16-decision">
  <a href="#" onclick="test(this);" class="btnClose">X</a>
 </div>

<强> Working Demo

您可以使用以下方法通过 jquery 绑定(bind)点击事件:

$('a').click(function(){
 console.log($(this).closest('div').attr('id'));
});

<强> Demo Using Jquery click handler

关于javascript - 获取最近 Div 的 ID 不工作两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478481/

相关文章:

javascript - 范围变量在 AngularJS 中不绑定(bind)

javascript - 在 angularJs 2 中生成幻灯片文件

php - 尝试访问 upload.php 时 plupload 运行时返回 403 FORBIDDEN 错误

javascript - Jquery 对话框在空格键上滚动

javascript - 解析 css 措施

javascript - 如何使元素粘在页面顶部,记住它最初并不在那里

javascript - 我需要使用 jQuery map 吗?

javascript - 是否可以防止使用 XHR 加载页面?

javascript - 检索变量值而不是该变量的名称

javascript - 声明对象的 JSON 数组并动态添加项目