4

嗨,我正在为购物车编写这段代码

$('.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

4 回答 4

2

这应该有效:

//compares the parent() HTMLElement (not the jQuery object)
if ( $(this).parent().get(0) == $('input.cartLevelChecked:checked').parent().get(0) ) {
     $(".selectPlan").show();
}
于 2010-10-07T07:46:36.927 回答
0

你快到了,如果父级是 cartID 和 checkBoxID 的直接父级,这应该可以工作:

if($('#'+cartID).parent().attr(id) == levelListID && $('#'+checkboxID).parent().attr(id) == levelListID ) {
    $(".selectPlan").show();
}
于 2010-10-07T07:45:42.000 回答
0

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

if (levelListID === $('#' + checkBoxID).closest('li').attr('id')) {
    ...
}
于 2010-10-07T07:54:18.460 回答
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),这意味着它找到了一个检查。

于 2010-10-07T09:33:53.077 回答