通过jquery将值设置为click事件上的元素的ID

时间:2012-03-28 02:18:04

标签: javascript jquery

我想在点击它时将菜单设置为活动状态。这就是我尝试过的:

<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设置为选中。但是我的编码设置了所有选定的链接,即使我只点击一个链接。

请有人给我解决方案。

非常感谢。

1 个答案:

答案 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');
}

看起来更简洁,但我会留给你:)