基于click的两个重复类名的元素id

时间:2012-02-25 23:31:58

标签: jquery

我有两个具有不同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");

我希望这能解释我想要做的事情。提前谢谢。

5 个答案:

答案 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为“管理员”的元素。