我使用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();
});
但它无法正常工作..
答案 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();