我有两个具有不同ID但具有相同类名的div。示例:Window1&窗口2 ...
<div id="Window1" class="name">
<span id="Admin"></span>
</div>
<div id="Window2" class="name">
<span id="Admin"></span>
</div>
当我点击ID“Admin”时,我想得到“name”的元素id。显然var解决方案在下面是错误的,但是想要设置一些接近这个...
var Window_id = $(".name").attr("id");
我希望这能解释我想要做的事情。提前谢谢。
答案 0 :(得分:2)
首先,您不能拥有两个具有相同ID的对象。因此,您不能拥有id="Admin"
的两个对象。您必须为每个人提供不同的ID或使用公共类名(或两者)。所以你可以改成它:
<div id="Window1" class="name">
<span id="Admin1" class="admin"></span>
</div>
<div id="Window2" class="name">
<span id="Admin2" class="admin"></span>
</div>
然后,使用此jQuery来处理click并获取所单击对象的父级的id:
$(".admin").click(function() {
var parentId = $(this).parent().attr("id");
});
或者,使用更少的jQuery更有效:
$(".admin").click(function() {
var parentId = this.parentNode.id
});
我最喜欢的选项实际上就是这样,因为它对某些HTML更改更加强大(比如在跨越时引入了新的容器div):
$(".admin").click(function() {
var parentId = $(this).closest(".name").attr("id");
});
前两个选项中使用的 .parent()
或.parentNode
在DOM hieararchy中只有一个级别。
.closest(".name")
会根据需要上升到父层次结构,直到找到与传入的选择器匹配的父级。它更强大,更有可能确保你得到你想要的父级,即使HTML有点变化。并非总是需要,但值得了解。
答案 1 :(得分:0)
在click
处理程序中使用它。
$(this).parent().attr("id");
$(this).parent()
将获取父元素,该元素是具有类name
的div,attr('id')
将获取div元素的id。
附注:理想情况下,页面上的元素ID应该是唯一的,而标记没有。
我建议使用id
而不是管理员span
,拥有一个公共类并使用类选择器来选择它们。这样的事情。
HTML
<div id="Window1" class="name">
<span class="admin"></span>
</div>
<div id="Window2" class="name">
<span class="admin"></span>
</div>
JS
$('.admin').click(function(){
var parentId = $(this).parent().attr("id");
//Or
var parentId = $(this).parent()[0].id;
//Or
var parentId = $(this).closest('.name').attr('id');
//Or
var parentId = $(this).closest('.name')[0].id;
});
答案 2 :(得分:0)
您不能为2个元素提供相同的ID。你给了跨越的同样的id。
如果你有span和同一个类名的不同ID,要获得父ID,你可以这样做
var parentID=$(".spanClassName").parent().attr("id");
假设spanClassName是您用于两个跨度的类名
$(".spanClassName").click(function(){
var parentID= $(this).parent().attr("id");
});
答案 3 :(得分:0)
您不能拥有两个具有相同ID“Admin”的跨度。试试这个
<div id="Window1" class="name">
<span>Admin</span>
</div>
<div id="Window2" class="name">
<span>Admin</span>
</div>
$('.name span').click( function( e ){
console.log( $(this).parent('.name').attr('id') );
});
答案 4 :(得分:0)
<div id="Window1" class="name">
<span class="Admin">a</span>
</div>
<div id="Window2" class="name">
<span class="Admin">a</span>
</div>
<script>
$('.Admin').on('click', function(){
var id = $(this).parent().attr('id');
alert(id);
});
</script>
您需要使用“管理员”课程,因为您拥有的内容不仅仅是ID为“管理员”的元素。