Подтвердить что ты не робот

JQuery: скрыть всех детей, затем показать определенный элемент

Я хочу скрыть все дочерние элементы в div. А затем покажите конкретную информацию, переданную функции.

function subDisplay(name) {
   $("#navSub").each(function() {
      $(this).hide();
   });
   $(name).show();
}

то я вызываю функцию из события onmouse, например: subDisplay(#DivIwantToShow); Но ничего не отображается...

Что я делаю неправильно?

4b9b3361

Ответ 1

Вам нужно скрыть дочерние элементы, а не содержащие div.

$("#navSub").children().hide();

Итак, теперь, если div, который вы пытаетесь показать, является элементом родительского div, он все равно будет отображаться, пока остальные остаются скрытыми.

Ответ 2

Если вы настроили таргетинг на дочерние элементы #navSub, вам нужно настроить их и скрыть, а не элемент navSub; которые вы можете использовать с помощью метода children();

function subDisplay(name) {
    $('#navSub').children().hide();
    $(name).show();
};

В противном случае, похоже, у вас есть несколько элементов с тем же идентификатором в DOM, что не разрешено.

Затем вам нужно передать строку (которая является допустимым селектором jQuery) на subDisplay();

subDisplay('#DivIwantToShow');

Ответ 3

Подводя итог замечательным комментариям @dotweb и @Matt;

function subDisplay(name) {
   $('#navSub').hide();
   $(name).show();
}

subDisplay('#DivIwantToShow');

Ответ 4

function subDisplay(name) {
   $("#navSub").hide();
   $('#'+name).show();
}

Ответ 5

Попробуйте использовать его вне цикла, например:

function subDisplay(name) {

     $("#navSub").hide();

     $(name).show();
}

http://jsfiddle.net/peduarte/m2pj8/

Ответ 6

если имя элемента передано по имени, используйте это:

    if($(this).attr('name') != name){
    //Hide it
    } else {
   //show it
}