0

我使用 li 和 ul html 标签构建了一个下拉菜单,但现在我想隐藏一些菜单取决于用户级别

代码:

<li id="20"><a href="#">File Generation<br /></a>
                        <ul class="subload"> 
                            <li id="21" ><a href="#">Generate Files<br/></a></li>
                            <li id="22" ><a href="#">Reprocess<br/></a></li>
                            <li id="23" ><a href="#">File Regenerate<br/></a></li>
                            <li id="24" ><a href="#">File Status<br/></a></li>
                        </ul></li>

我试过了

$(document).ready(function() {
                $("li #20").hide();

                $("body").on({
                    ajaxStart: function() {
                        $(this).addClass("loading");
                    },
                    ajaxStop: function() {
                        $(this).removeClass("loading");
                    }
                });

                var theForm = $("form[name=MenuBean]");
                var params = theForm.serialize();
                var actionURL = theForm.attr("action");
                $.ajax({
                    type: "POST",
                    url: actionURL + "?name='Anand'",
                    data: params,
                    success: function(data, textStatus, XMLHttpRequest) {
                        alert("Success : " + data);
                        var tmp = data.split("|");
                        for (i = 0; i < tmp.length; i++) {
                            $("li #"+tmp[i]).show();
                        }
                        if (data == "success") {
                        } else {
                            $("#ajaxresult").show().html(data).fadeIn(1000);
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, data) {
                        alert("Error : " + data);
                    }
                });
                //event.preventDefault();
            });

但它不能正常工作..

4

3 回答 3

2

删除选择器中的空格。 <li id="20">将被选中$("li#20"),而不是$("li #20")

$("li #20")正在寻找liID 为 20 的元素。

li但实际上,如果您使用 ID,则不需要在选择器中,因为应该只有 1 个具有该 ID 的元素。

此外,CSS 不喜欢以数字开头的 ID,因此您将无法在样式表中通过 ID 引用任何这些元素。如果这是一个问题,那么您应该将它们更改为更具描述性的内容。

于 2013-09-12T12:37:55.520 回答
0

你的选择器$("li #"+tmp[i]).show();是错误的。您的选择器正在寻找具有 id 的元素,该元素是元素x的后代li

由于您有元素 id,因此无需使用元素选择器和 id 选择器。

它应该是

$("#"+tmp[i]).show();
于 2013-09-12T12:37:06.663 回答
0

删除空间:

更改自:

$("li #"+tmp[i]).show();

$("li#"+tmp[i]).show();
于 2013-09-12T12:42:10.053 回答