Как обнаружить, если элемент не видим быстрым способом в JavaScript?

Обойти некоторые проблемы/проблемы, которые имеют ben, выделилось, я предложу преобразовать строку в нижний регистр сначала и затем назову метод ToTitleCase. Вы могли тогда использовать IndexOf (" МГц") или IndexOf (" O \'") для определения особых случаев, которым нужно более определенное внимание.

inputString = inputString.ToLower();
inputString = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(inputString);
int indexOfMc = inputString.IndexOf(" Mc");
if(indexOfMc  > 0)
{
   inputString.Substring(0, indexOfMc + 3) + inputString[indexOfMc + 3].ToString().ToUpper() + inputString.Substring(indexOfMc + 4);
}
10
задан Jonathan Weiß 12 August 2009 в 09:57
поделиться

6 ответов

используйте JQuery, и вы можете это сделать

var isVisible = $('#foo').is(':visible'); 
6
ответ дан 4 December 2019 в 02:50
поделиться

Селекторы CSS оптимизированы для поиска наборов совпадающих элементов. Есть несколько библиотек, реализующих эту функцию. JQuery, ExtJS Core, чтобы назвать пару.

Используя Ext Core, я мог бы написать функцию javascript, которая проверяет видимость следующим образом:

// Checks whether the element is currently visible using 
//     both visibility and display properties
if(Ext.get(el).isVisible()){
    alert('it\'s visible');
};

см. http://extjs.com/products/extcore/docs/ ? class = Ext.Element для дополнительных функций Ext Core Ext.Element.

-1
ответ дан 4 December 2019 в 02:50
поделиться
function isVisible(elem) {
  return elem.style.visibility !== "hidden";
}
-1
ответ дан 4 December 2019 в 02:50
поделиться

Помните, что visibility: hidden делает элемент скрытым, но этот элемент все еще занимает свое пространство, что может иметь некоторые неожиданные последствия для макета (это также может быть преимуществом, если вы знаете об этом).

Я бы использовал абсолютное позиционирование, чтобы переместить элемент далеко влево, вне возможной ширины экрана. Это выводит элемент из потока, поэтому скрытый элемент не влияет на макет, делает элемент практически невидимым и не имеет недостатков display: none.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

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

Я бы использовал абсолютное позиционирование, чтобы переместить элемент далеко влево, за пределы возможной ширины экрана. Это выводит элемент из потока, поэтому скрытый элемент не влияет на макет, делает элемент практически невидимым и не имеет недостатков display: none.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

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

Я бы использовал абсолютное позиционирование, чтобы переместить элемент далеко влево, за пределы возможной ширины экрана. Это выводит элемент из потока, поэтому скрытый элемент не влияет на макет, делает элемент практически невидимым и не имеет недостатков display: none.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

Я бы использовал абсолютное позиционирование, чтобы переместить элемент далеко влево, за пределы возможной ширины экрана. Это выводит элемент из потока, поэтому скрытый элемент не влияет на макет, делает элемент практически невидимым и не имеет недостатков display: none.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

Я бы использовал абсолютное позиционирование, чтобы переместить элемент далеко влево, за пределы возможной ширины экрана. Это выводит элемент из потока, поэтому скрытый элемент не влияет на макет, делает элемент практически невидимым и не имеет недостатков display: none.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

У дисплея есть недостатки: нет.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

У дисплея есть недостатки: нет.

.hide {
    position:absolute;
    left:-3000px;
}

Затем, чтобы определить, скрыт ли элемент, вы можете использовать его свойство offsetLeft:

if( myElement.offsetLeft < 0 ){ /* it's hidden */ }

Если вам нужно определить, находится ли дочерний элемент за пределами экрана (вы не знаете, скрытый ли это элемент или его дочерний элемент), вы можно использовать .offsetParent и цикл while, как описано в статье PPK Find Position .

3
ответ дан 4 December 2019 в 02:50
поделиться

Переключение видимости элемента от Кента - ненавязчивый, семантически допустимый способ представления контента, который будет ухудшаться для браузеров, не поддерживающих CSS.

  • После полной загрузки страницы мы пролистайте все дерево документа и найдите элементы уровня блока, стилизованные с помощью переключателя имени класса. Если мы находим тот, который говорит, что переключатель закрыт, мы немедленно скрываем его следующий родственный элемент, задав ему стиль с именем класса hidden.
  • Когда мы находим один, мы приказываем ему прислушиваться к щелчкам мыши.
  • Когда один из наших питомцев элементы слышат щелчок, он прыгает в действие, скрывая (или показывая) своего следующего доступного брата, так же, как мы делали это во время первоначального сканирования.
  • Все три названия класса (переключение, закрытие и скрытие) вводятся в внизу в вызове инициализации и может быть изменено на любое допустимое имя класса.
0
ответ дан 4 December 2019 в 02:50
поделиться

Проверка фокуса будет работать независимо от того, виден родительский элемент или нет.

var isVisible = true;
try{
    document.getElementById("target").focus();
}catch(err){
    isVisible = false;
}

Очевидно, что он должен работать для ввода или ссылки, но для другого элемента я не уверен.

Я изучал ту же проблему перед использованием jQuery, но на этот раз моя цель - сосредоточить внимание на первом доступном поле на форме . В результате получается такой код:

$(":text:visible:enabled").filter(function(){
    return $(this).parents.filter(function(){
        return this.style.display == "none"; 
    }).size()==0;
}).slice(0,1).focus();

Он также будет работать для скрытых / невидимых родителей.

0
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

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