在jquery中隐藏li标签

时间:2013-09-12 12:35:38

标签: jquery

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

CODE:

<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();
            });

但它无法正常工作..

3 个答案:

答案 0 :(得分:2)

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

$("li #20")正在寻找一个ID为20 in li的元素。

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

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

答案 1 :(得分:0)

你的选择器$("li #"+tmp[i]).show();错了。您的选择器正在查找标识为x的元素,该元素是li元素的后果。

由于你有元素id,所以不需要使用元素选择器和id选择器。

应该是

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

答案 2 :(得分:0)

删除空格:

更改自:

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

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