JQuery: скрыть всех детей, затем показать определенный элемент
Я хочу скрыть все дочерние элементы в div.
А затем покажите конкретную информацию, переданную функции.
function subDisplay(name) {
$("#navSub").each(function() {
$(this).hide();
});
$(name).show();
}
то я вызываю функцию из события onmouse, например: subDisplay(#DivIwantToShow);
Но ничего не отображается...
Что я делаю неправильно?
Ответы
Ответ 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
}