Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:has(),我只需要选择子项_Javascript_Jquery_Jquery Selectors_Hierarchical Data - Fatal编程技术网

Javascript JQuery:has(),我只需要选择子项

Javascript JQuery:has(),我只需要选择子项,javascript,jquery,jquery-selectors,hierarchical-data,Javascript,Jquery,Jquery Selectors,Hierarchical Data,我正在使用JQuery处理一些层次化数据,并试图添加某种类型的视觉指示,以指示选择了树中的哪些元素。下面是我正在生成的html示例(我们正在处理): 我遇到的问题是,由于所有区域都由嵌套的ul组成,因此选中任何区域中的复选框也会添加。选择树中较高的任何li。。。因此,单击Cairo的复选框将.selected类添加到埃及和非洲 有人知道我将如何只捕捉李的孩子,他们有一个可见的复选框,作为一个直接的孩子 以下是我的整个js文件,以防它提供洞察: $(document).ready(function

我正在使用JQuery处理一些层次化数据,并试图添加某种类型的视觉指示,以指示选择了树中的哪些元素。下面是我正在生成的html示例(我们正在处理):

我遇到的问题是,由于所有区域都由嵌套的ul组成,因此选中任何区域中的复选框也会添加。选择树中较高的任何li。。。因此,单击Cairo的复选框将.selected类添加到埃及和非洲

有人知道我将如何只捕捉李的孩子,他们有一个可见的复选框,作为一个直接的孩子

以下是我的整个js文件,以防它提供洞察:

$(document).ready(function() {
    $(".selectedcheck").hide();
    showSelected = function(){
        $("#miller li").removeClass("chosen");
        $("#miller li:has(input:checkbox:checked:visible)").addClass('chosen');
    };
    $("#miller a").click(function(event) {
        event.preventDefault();
        $("#miller li").removeClass("selected");
        $(this).parent().addClass("selected");
        data = $(this).data();
        $("#addChild").attr("href", "addChild.php?parentid=" + data.self).html("Add item under " + data.nodename);
        $("#addSibling").attr("href", "addChild.php?parentid=" + data.parent).html("Add item next to " + data.nodename);
        $("#editRegion").attr("href", "editRegion.php?id=" + data.self).html("Edit " + data.nodename);
        $("#deleteRegion").attr("href", "deleteRegion.php?id=" + data.self).html("Delete " + data.nodename);
        $("#addResort").attr("href", "addResort.php?regionid=" + data.self).html("Add resort to " + data.nodename);
        $("#miller ul ul").hide();
        $(this).parents("#miller ul").show();
        $(this).siblings("#miller ul").show();
        showSelected();
    });
    $("#miller .millermultiselect").click(function(event) {
        $("#miller li").removeClass("selected");
        $(this).parent().addClass("selected");
        $("#miller ul ul").hide();
        $(this).parents("#miller ul").show();
        if($(this).is(':checked')) {
            $(this).parent().find(".millermultiselect").not(this).hide();
            $(this).parent().find(".millermultiselect").not(this).removeAttr("checked");
            $(this).parent().find(".selectedcheck").show();
        } else {
            $(this).parent().find(".millermultiselect").not(this).show();
            $(this).parent().find(".selectedcheck").hide();
        }
        $(this).siblings(".selectedcheck").hide();
        $(this).siblings("#miller ul").show();
        showSelected();
    });
});

您可以使用直接子体选择器,然后获取其父项:

$("#miller li > input:checkbox:checked:visible").parent().addClass("chosen");

您可以使用直接子体选择器,然后获取其父项:

$("#miller li > input:checkbox:checked:visible").parent().addClass("chosen");
我将如何去捕捉李的,有一个可见的复选框,作为一个直接的孩子

扭转这个问题怎么样

$('input:checkbox').is(':visible').is(':checked').parent('li')
我将如何去捕捉李的,有一个可见的复选框,作为一个直接的孩子

扭转这个问题怎么样

$('input:checkbox').is(':visible').is(':checked').parent('li')

这正是我想要的。我很确定我的大脑今天不工作了。这正是我想要的。我很确定我的大脑今天不工作了。