Скрыть div не работает?

У меня есть div, который скрыт по умолчанию, когда щелчки использования показывают ссылку, вызывается следующий метод javascript:

function ChangeControlVisibility(elementID) {
    var  element = $("#" + elementID);
    if (element.css('display') != 'block' && element.css('display') != 'table') {
        element.show();
        var tempElement = $('div.expanded');
        if (tempElement.length > 0) {
            tempElement.css('background-image', 'url(../images/arrow1.gif)');
        }
    }
    else {
        element.hide();
        var tempElement = $('div.expanded');
        if (tempElement.length > 0) {
            tempElement.css('background-image', 'url(../images/arrow2.gif)');
        }  
    } 
}

этот шаг работает, но когда я вызываю предыдущий метод в событии page_load метод не работает: element.css ('display') undefined.

Есть ли проблема в предыдущем коде ????

1
задан DEVMBM 31 August 2010 в 11:16
поделиться

3 ответа

Выполняете ли вы этот код в обработчике .ready()?

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

$(document.ready(function(){
   if (!element.is(':visible')){
   }
   else{
   }
});

Ref.: .is(), .ready(), :visible

1
ответ дан 2 September 2019 в 21:42
поделиться

Вы можете упростить его в целом, используя .toggle() и селектор :visible , например:

function ChangeControlVisibility(elementID) {
  var vis = $("#" + elementID).toggle().is(':visible');
  $('div.expanded').css('background-image', 'url(../images/arrow' + (vis ? '1' : '2') + '.gif)');
}

Это переключает видимость (через .hide()/.show() под обложками) и проверяет результирующую видимость, чтобы увидеть, отображается ли она на странице или нет, и устанавливает изображение стрелки в соответствии с этим.

1
ответ дан 2 September 2019 в 21:42
поделиться

Посмотрите на селектор jQuery :hidden и :visible. и попробуйте что-то вроде этого:

function ChangeControlVisibility(elementID) { var hiddenElement = $("#" + elementID + ":hidden"); var element = $("#" + elementID); if (hiddenElement.length > 0) { // чтобы проверить, существует ли этот элемент скрытыйЭлемент.показать(); var tempElement = $('div.expanded'); если (tempElement.length > 0) { tempElement.css('фоновое изображение', 'url(../images/arrow1.gif)'); } } еще { элемент.скрыть(); var tempElement = $('div.expanded'); если (tempElement.length > 0) { tempElement.css('фоновое изображение', 'url(../images/arrow2.gif)'); }
} }

0
ответ дан 2 September 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: