获取最接近的 Div 的 ID 两次不起作用
Get ID of closest Div not working twice
>我有一个关闭按钮,我正在处理,正在使用"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>
工作演示
您可以使用以下命令通过 jquery 绑定点击事件:
$('a').click(function(){
console.log($(this).closest('div').attr('id'));
});
使用 Jquery 单击处理程序的演示
您遇到的问题是由于您选择要更改显示的div 的方式造成的:每次单击链接时,您都会调用与最接近的相同选择器,该选择器将仅考虑div 列表中的第一个元素。我建议你简单地将jQuery事件绑定到所有A标签,如下所示:
$("A.btnClose").on('click', function(e) {
e.preventDefault();
$(this).closest('div').css('display', 'none');
});
现在,当您单击链接时,它将查找单击的 A 标签的最接近的 DIV。您甚至可以避免使用 id 引用(如在我的 examole 中)本身,因为很明显您想隐藏 A 标签所在的div。
干杯
你应该避免内联JS,但这是查找发生事件的实际元素的方法:
function test() {
var name = $(event.target).closest('div').attr('id');
alert(name);
}
这里的"事件"是隐式对象,它保存了DOM元素上事件的所有信息。
http://jsfiddle.net/5x7g96hu/3/
相关文章:
- 两个层次的手风琴除了第一次不起作用
- Jquery Onclick 事件函数第二次不起作用
- Jquery onblur 第二次不起作用
- css'不显示'第一次不起作用
- 下拉列表的onChange()第二次不起作用
- 在 onKeyup AJAX 调用第一次不起作用或按回键时
- 数据表每 30 秒自动刷新一次不起作用
- Ajax 成功函数第二次不起作用
- Jquery 模态第二次不起作用
- 获取最接近的 Div 的 ID 两次不起作用
- JS运行两次不起作用
- 电话间隙介质记录第二次不起作用
- 添加按钮第二次不起作用
- Javascript计算器退格键第一次不起作用
- 我的点击第二次不起作用
- 谷歌脚本每分钟触发一次不起作用
- 阵列推送第一次不起作用
- $watch在更改字符串时第二次不起作用
- javascript's函数第二次不起作用
- window.open两次不起作用(第二个窗口没有出现)-Blocker解决方法