jQuery `.is (": visible ")` не работает в Chrome - PullRequest
198 голосов
/ 01 декабря 2011
if ($("#makespan").is(":visible") == true) { 
    var make = $("#make").val(); 
}
else {
    var make = $("#othermake").val(); 
}

Make:<span id=makespan><select id=make></select><span id=othermakebutton class=txtbutton>Other?</span></span><span id=othermakespan style="display: none;"><input type=text name=othermake id=othermake>&nbsp;-&nbsp;<span id=othermakecancel class=txtbutton>Cancel</span></span>

Приведенный выше код работает в Firefox без сбоев, но, похоже, не работает в Chrome.В Chrome он показывает .is(":visible") = false, даже когда он true.

. Я использую следующую версию jQuery: jquery-1.4.3.min.js

jsFiddle Ссылка: http://jsfiddle.net/WJU2r/4/

Ответы [ 12 ]

0 голосов
/ 03 февраля 2016

Это фрагмент кода из jquery.js, который выполняется, когда вызывается (": visible"):

if (jQuery.expr && jQuery.expr.filters){

    jQuery.expr.filters.hidden = function( elem ) {
        return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
    };

    jQuery.expr.filters.visible = function( elem ) {
        return !jQuery.expr.filters.hidden( elem );
    };
}

Как видите, он использует больше, чем просто свойство отображения CSS.Это также зависит от ширины и высоты содержимого элемента.Следовательно, убедитесь, что элемент имеет некоторую ширину и высоту.И для этого вам может потребоваться установить для свойства display значение "inline-block" или "block"

0 голосов
/ 30 ноября 2014

Если элемент является дочерним по отношению к скрытому элементу, то (": visible") вернет true, что неверно.

Я только что исправил это, добавив "display: наследовать" к дочернему элементу,Это исправит это для меня:

<div class="parent">
   <div class="child">
   </div>
<div>

и CSS:

.parent{
   display: hidden;
}
.child{
   display: inherit;
}

Теперь элемент можно эффективно включать и выключать, изменяя видимость родительского элемента, и $ (element) .is (": visible") вернет видимость родительского элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...