2013-07-22 4 views
0

У меня есть код javascript, который при нажатии ссылки может отображать и скрывать разделы страницы.jquery show and hide

function shoh(id) { 

    if (document.getElementById) { // DOM3 = IE5, NS6 
     if (document.getElementById(id).style.display == "none"){ 
      $(id).fadeIn();  
     } else { 
      $(id).hide(); 
     } 
    } else { 
     if (document.layers) { 
      if (document.id.display == "none"){ 
       document.id.display = 'block'; 
      } else { 
       document.id.display = 'none'; 
      } 
     } else { 
      if (document.all.id.style.visibility == "none"){ 
       document.all.id.style.display = 'block'; 
      } else { 
       document.all.id.style.display = 'none'; 
      } 
     } 
    } 
} 

однако сейчас не работает, когда я добавил JQuery FadeIn и скрыть вместо того, чтобы использовать метод document.getElementById. Зачем?

+0

Have вы добавили библиотеку JQuery для загрузки с страница? – Dom

+1

Почему вы используете этот ужасный код совместимости с 2000 года в 2013 году? Вам даже не понадобится jQuery, * все * браузеры поддерживают 'getElementById' сегодня. – Jon

ответ

5

Чтобы выбрать элемент по id с помощью jQuery, вы должны использовать selector syntax, что означает добавление # к идентификатору. Таким образом, изменение

$(id).fadeIn(); 

в

$("#" + id).fadeIn(); 
+0

ваша легенда! большое спасибо – user2166538

+0

не могу принять за 8 минут, видимо, – user2166538

+0

@ user2166538, спасибо за внимание – Satpal

0

Попробуйте это:

function shoh(id) { 
    var el = $('#' + id); 
    if (el.is(':visible')) { 
     el.hide(); 
    } else { 
     el.fadeIn(); 
    } 
} 
0

Благодаря JQuery работает для вас, вы не будете писать код Crossbrowser.

Так просто

var $el = $('#'+id); // <-- this is the main key :-) 

if ($el.css('display') == "none"){ 
     $el.fadeIn();  
} else { 
     $el.hide(); 
} 
0

Вы могли бы просто объявить его как переменную, а затем оберните его в селекторе JQuery:

var $el = $(document.getElementById(id)); 
// if 
$el.fadein(); 
//else 
$el.hide(); 

jsFiddle

+0

$ ($ el) бесполезен из-за того, что $ el уже является объектом jquery. :-) –