我想在点击它时将菜单设置为活动状态。这就是我尝试过的:
<script language="javascript" type="text/javascript">
var select;
$(document).ready(function () {
$.getJSON(url, function (data) {
$.each(data, function (index, dataOption) {
var new_li = $("<li class='level1' id='select_list'><a href='javascript:void(0);' id='" + dataOption.ID + "' class ='selectedcategory'>" + dataOption.Name + "</a>");
$('a#' + dataOption.ID).click(function () {
select = "selected";
$('.level1').attr("id",select);
});
});
});
});
</script>
当我点击该链接时,我尝试做的是将'level1'的id设置为选中。但是我的编码设置了所有选定的链接,即使我只点击一个链接。
请有人给我解决方案。
非常感谢。
答案 0 :(得分:1)
之所以发生这种情况,是因为您在所有.attr()
元素上调用了.level1
而不是仅仅被其子元素点击的元素,所以,
变化
$('.level1').attr("id",select);
到
$(this).parent().attr('id', select);
您还需要通过
删除其他<li>
的“已选择”ID
$('.level1').removeAttr('id');
所以完整的代码如下:
$('a#' + dataOption.ID).click(function () {
$('.level1').removeAttr('id');
$(this).parent().attr("id", 'selected');
});
有一个建议,当你想要一个selected
类型的菜单列表时,类通常会在这种情况下使用,如果你正在使用类,你会做类似的事情
$('a#' + dataOption.ID).click(function () {
$('.level1').removeClass('selected');
$(this).parent().addClass('selected');
}
看起来更简洁,但我会留给你:)