如何检查两个元素/ div是否属于同一个父元素?

时间:2010-10-07 07:37:28

标签: jquery html forms dom-traversal

您好我正在处理购物车的这段代码

$('.addtoCart').click(function() {

    //get button id      
    var cartID = $(this).attr("id"); 

    //get check box id   
    var checkBoxID = $('input.cartLevelChecked:checked').attr("id");

    //get parent id
    var levelListID = $(this).closest('li').attr("id");

    if(('#'+cartID && '#'+checkBoxID).parent('#'+levelListID)){
        $(".selectPlan").show();
    }

    //alert(/*cartID + checkBoxID +*/ levelListID);
});

基本上我正在检查用户选中的复选框和他们点击的按钮是否属于同一个父母然后显示div

任何帮助将不胜感激。感谢

4 个答案:

答案 0 :(得分:2)

这应该有效:

//compares the parent() HTMLElement (not the jQuery object)
if ( $(this).parent().get(0) == $('input.cartLevelChecked:checked').parent().get(0) ) {
     $(".selectPlan").show();
}

答案 1 :(得分:0)

你几乎就在那里,如果父母是cartID和checkBoxID的直接父母,这应该有效:

if($('#'+cartID).parent().attr(id) == levelListID && $('#'+checkboxID).parent().attr(id) == levelListID ) {
    $(".selectPlan").show();
}

答案 2 :(得分:0)

您需要将正确查询的levelListID与复选框中最近的li父级的ID进行比较,您应该以相同的方式查询:

if (levelListID === $('#' + checkBoxID).closest('li').attr('id')) {
    ...
}

答案 3 :(得分:0)

您可以直接访问<li>父级,看看是否存在已检查的元素,如下所示:

$('.addtoCart').click(function() {
  if($(this).closest('li').find('input.cartLevelChecked:checked').length) {
    //yes we're in the same parent
  }
});

这会使用.closest()转到父<li>,然后使用.find()在内部查找复选框。然后我们只是检查.length不是0(true),这意味着它已经检查了一个。