首次追加操作后,父节点为空

时间:2017-01-06 04:59:19

标签: javascript jquery angularjs

我有以下功能来渲染组合框中可用的选项:

var optionsListElement = element.find('div.combobox-list'),
itemsElement = optionsListElement.find('ul.items-list');

function renderOptions(items) {
    var parentElement = itemsElement.parent();

    if (!items || items.length == 0) {
        itemsElement = itemsElement.append($(
            '<li class="no-bullet">No Option Available</li>'));
    } else {
        if (!scope.hasColumns) {
            items.forEach(function (item, i) {
                innerScope = createInnerScope({
                    item: item,
                    $first: i == 0,
                    $index: i,
                    $even: i % 2 == 0,
                    $odd: i % 2 != 0,
                    $last: i == item.length - 1
                });

                transclude(innerScope, function (rowTemplate, transcludeScope) {
                    // If there is not transclude rowTemplate, use default
                    if (rowTemplate.length == 0 || rowTemplate.length == 1 && rowTemplate[0].nodeType == 3 && rowTemplate[0]) {
                        rowTemplate = angular.element(
                            '<span title="{{ getText(item) }}" \
                                                        >{{ getText(item) }}\
                                                    </span>');
                    }

                    itemsElement.append(
                        $compile(angular.element(
                            '<li ng-click="focusAndSelectOption(item)"\
                                                        ng-class-even="\'even\'" ng-class-odd="\'odd\'"\
                                                        ng-class="{ selected: isSelected(item), focused: isFocused($index) }">\
                                                    </li>').append(rowTemplate))(transcludeScope)
                    );
                });
            });
        }
    }

    parentElement.append(itemsElement);
}

对于第一个调用(没有items),该函数按预期工作,并将li与文本No Option Available绑定到itemsElementparentElement似乎保留了要追加的正确目标div。但在任何后续调用中,parent()都会返回null,而parentElement无法附加选项。

使用此功能的div结构如下所示:

<div class="combobox-list" style="visibility:hidden" >
    <ul class="items-list" ></ul>
</div>

我只是想将li项绑定到ul,并且很少有属性指令绑定到ul所以我必须将其保留在代码之外。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题是另一个清理所有ul元素的功能。所以这变得无关紧要