开发者

How can I check if two elements/div belong to the same parent?

Hi I am working on this piece of code for a shopping cart

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

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

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

    /开发者_如何学Go/get parent id
    var levelListID = $(this).closest('li').attr("id");

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

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

Basically I'm checking to see if the check-box the user checked and button they clicked on belongs to the same parent then show a div

any help would be greatly appreciated. thanks


This should work:

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


You need to compare levelListID, which you correctly queried, to the id of the checkbox's closest li parent, which you should query the same way:

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


you were almost there, this should work if the parent is the immediate parent of both cartID and checkBoxID:

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


You can just go up to the <li> parent and see if the checked element exists in there, like this:

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

This uses .closest() to go the parent <li> then looks inside for the checkbox using .find(). Then we're just checking that the .length isn't 0 (true) which means it found one checked.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜