2013-09-12 2 views
0

я Bulid ниспадающее меню с помощью Ли и уль HTML тег, но теперь я хочу, чтобы скрыть некоторые меню зависит от уровня пользователяСкрытие литий тег в JQuery

КОД:

<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

Ваш селектор $("li #"+tmp[i]).show(); неправильно. Ваш селектор ищет элемент с идентификатором x, который является декомпозицией элемента li.

Поскольку у вас есть идентификатор элемента, нет необходимости использовать селектор элементов и селектор идентификаторов.

должно быть

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

Удалить пробелы в ваших селекторов. <li id="20"> будет выбран с $("li#20"), а не $("li #20").

$("li #20") ищет элемент с идентификатором 20 внутри a li.

Реально, однако, вы не нуждаетесь в li в селекторе, если используете идентификатор, так как должен быть только один элемент с этим идентификатором.

Кроме того, CSS не нравится идентификаторы, начинающиеся с цифр, поэтому вы не сможете ссылаться ни на один из этих элементов по идентификатору в таблице стилей. Если это проблема, вы должны изменить их на что-то более описательное.

+2

* "Кроме того, некоторые браузеры не любят идентификаторы, начинающиеся с цифр ... «* Не волнует« id », но селектор' id' ** **. CSS не позволяет селектору 'id' начинать с цифры. Также обратите внимание, что в принципе нет никакого смысла в 'li # 20' (в отличие от просто # 20), если не важно игнорировать селектор, если элемент с этим' id' не является 'li'. –

+0

Ahh - спасибо за исправление. Я знал, что это было проблемой для меня в прошлом, и я никогда не делаю этого с тех пор. Я исправлю ответ :) – Archer

+0

Приветствия .. Работает .. – Bucks

0

Удалить пространство:

Изменение от:

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

К

$("li#"+tmp[i]).show(); 
Смежные вопросы