jQuery stopPropagation()不起作用

时间:2017-09-27 03:51:31

标签: javascript jquery asp.net

我正在尝试使用asp.net和jQuery创建一个树导航器。

首先我从数据库中获取根节点,并将它们绑定到asp Repeater,如下所示,

<ul>
   <asp:Repeater ID="repMail" runat="server">
      <ItemTemplate>
         <li class="list <%# Eval("Type") %>" id="<%# Eval("Id") %>">
            <span style="margin-right: 10px" class="glyphicon <%# GetIcon(Eval("Type"))  %>"></span><%# Eval("Title") %>
         </li>
      </ItemTemplate>
   </asp:Repeater>
</ul>

然后当用户点击其中一个根节点时我正在加载孩子......它将一直运行直到没有文件夹。 Jquery如下:

$('.list.Folder').click(function (e) {
    e.stopPropagation();

    var self = $(this);
    var s = self.find('span');
    var children = self.find(' > ul > li');
    var count = children.length;

    //check if child nodes already append
    if (count == 0) {
        //changing icon folder open
        if (s.hasClass('glyphicon-folder-close')) {
            s.removeClass('glyphicon-folder-close');
            s.addClass('glyphicon-folder-open');

            var code = self.attr('id');

            // get the child nodes from database using ajax get
            var url = "TreeItem";
            var arg = {
                action: 'GetNodes',
                type: 'Folder',
                data: code
            };
            $.get(url, arg)
                .done(function (r) {
                    var msgAll = $.parseJSON(r);
                    var u = $('<ul>');
                    for (var i = 0; i < msgAll.length; i++) {
                        var m = msgAll[i];

                        if (m.Type === 'Folder') {
                            u.append('<li class="list ' + m.Type + '" id="' + m.Id + '"><span style="margin-right: 10px" class="glyphicon glyphicon-folder-close"></span>' + m.Title + '</li>');
                        } else if (m.Type === 'List') {
                            u.append('<li class="list ' + m.Type + '" id="' + m.Id + '"><span style="margin-right: 10px" class="glyphicon glyphicon-leaf"></span>' + m.Title + '</li>');
                        }
                    }
                    u.append('</ul>');
                    u.appendTo(self);
                })
                .fail(function () {
                });
        }
    } else {
        if ((s.hasClass('glyphicon-folder-open')) && (children.is(':visible'))) {
            s.removeClass('glyphicon-folder-open');
            s.addClass('glyphicon-folder-close');

            children.hide();
        } else if ((s.hasClass('glyphicon-folder-close')) && (children.is(':hidden'))) {
            s.removeClass('glyphicon-folder-close');
            s.addClass('glyphicon-folder-open');

            children.show();
        }
    }
    return false;
});

在这里,从'GetIcon'方法,如果Type是文件夹,它将返回'glyphicon-folder-close',如果它只是一个节点,则返回'glyphicon-leaf'。

我的问题是,当我点击第二级文件夹li项时,它将引用父级,虽然我使用了stopPropagation()并返回false。

0 个答案:

没有答案