==
проверяет ссылки на объекты, .equals()
проверяет строковые значения.
Иногда кажется, что ==
сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.
Для Например:
String fooString1 = new String("foo");
String fooString2 = new String("foo");
// Evaluates to false
fooString1 == fooString2;
// Evaluates to true
fooString1.equals(fooString2);
// Evaluates to true, because Java uses the same object
"bar" == "bar";
Но будьте осторожны с нулями!
==
обрабатывает строки null
в порядке, но вызов .equals()
из пустой строки приведет к исключению:
String nullString1 = null;
String nullString2 = null;
// Evaluates to true
System.out.print(nullString1 == nullString2);
// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));
Итак, если вы знаете, что fooString1
может но не менее очевидно, что он проверяет значение null (из Java 7):
System.out.print(Objects.equals(fooString1, "bar"));
Так как вопрос относится к единственному элементу, этот код мог бы более подойти:
// Checks css for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");
// The same works with hidden
$(element).is(":hidden");
То же как предложение twernt, но относившийся единственный элемент; и это соответствия алгоритм рекомендовано в jQuery FAQ
Можно использовать hidden
селектор:
// Matches all elements that are hidden
$('element:hidden')
И visible
селектор:
// Matches all elements that are visible
$('element:visible')
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
// element is hidden
}
Выше метода не рассматривает видимости родителя. Для рассмотрения родителя также необходимо использовать .is(":hidden")
или .is(":visible")
.
, Например,
<div id="div1" style="display:none">
<div id="div2" style="display:block">Div2</div>
</div>
вышеупомянутый метод рассмотрит
div2
видимый в то время как:visible
нет. Но вышеупомянутое могло бы быть полезным во многих случаях, особенно когда необходимо найти, существуют ли какие-либо ошибочные отделения, видимые в скрытом родителе, потому что в таких условиях:visible
не будет работать.
Часто, проверяя, видно что-то или нет, вы сразу же идете дальше и делаете с этим что-то еще. Цепочка jQuery упрощает это.
Итак, если у вас есть селектор, и вы хотите выполнить какое-либо действие с ним, только если он виден или скрыт, вы можете использовать filter (": visible")
или ] фильтр (": скрыто" )
с последующим связыванием его с действием, которое вы хотите предпринять.
Итак, вместо оператора if
, например:
if ($('#btnUpdate').is(":visible"))
{
$('#btnUpdate').animate({ width: "toggle" }); // Hide button
}
Или более эффективно, но еще хуже:
var button = $('#btnUpdate');
if (button.is(":visible"))
{
button.animate({ width: "toggle" }); // Hide button
}
You все это можно сделать одной строкой:
$('#btnUpdate').filter(":visible").animate({ width: "toggle" });