У меня есть 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.
Есть ли проблема в предыдущем коде ????
Выполняете ли вы этот код в обработчике .ready()
?
И, кстати, если вам действительно не нужно явно проверять состояние отображения table
, вы можете просто запросить
$(document.ready(function(){
if (!element.is(':visible')){
}
else{
}
});
Вы можете упростить его в целом, используя .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()
под обложками) и проверяет результирующую видимость, чтобы увидеть, отображается ли она на странице или нет, и устанавливает изображение стрелки в соответствии с этим.
Посмотрите на селектор 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)');
}
}
}