Если метод equals()
присутствует в классе java.lang.Object
, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор ==
проверяет, что фактические экземпляры объекта одинаковы или нет.
Пример
Рассмотрим две различные ссылочные переменные, str1
и str2
:
str1 = new String("abc");
str2 = new String("abc");
Если вы используете equals()
System.out.println((str1.equals(str2))?"TRUE":"FALSE");
, вы получите выход как TRUE
, если вы используете ==
.
System.out.println((str1==str2) ? "TRUE" : "FALSE");
Теперь вы получите вывод FALSE
в качестве вывода, потому что оба str1
и str2
указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String()
каждый новый объект создается каждый раз.
В простейшем случае вам нужно будет использовать обратный вызов на вызов на fadeOut().
Предположим, что тег изображения уже на странице:
<img id="image" src="http://sstatic.net/so/img/logo.png" />
Вы передаете функцию в качестве аргумента обратного вызова в fadeOut()
, которая сбрасывает атрибут src
и затем затухает обратно, используя fadeIn()
:
$("#image").fadeOut(function() {
$(this).load(function() { $(this).fadeIn(); });
$(this).attr("src", "http://sstatic.net/su/img/logo.png");
});
Для анимации в jQuery, обратные вызовы выполняются после завершения анимации. Это дает вам возможность создавать цепочку анимации последовательно. Обратите внимание на вызов load()
. Это гарантирует, что изображение будет загружено перед повторным затуханием (благодаря Y. Shoham).
Вы уверены, что используете обратный вызов
, который вы передаете в fadeOut
, чтобы изменить источник attr, а затем вызываете fadeIn
? Вы не можете вызывать fadeOut
, attr()
и fadeIn
последовательно. Вы должны подождать, пока fadeOut
не завершится...
$("#main_image").fadeOut("slow",function(){
$("#main_image").load(function () { //avoiding blinking, wait until loaded
$("#main_image").fadeIn();
});
$("#main_image").attr("src","...");
});
Ну, вы можете поместить следующее изображение за текущее, и fadeOut текущее так, чтобы оно выглядело, как будто затухает в следующее изображение.
Когда затухание завершено, вы можете поменять местами изображения. Итак, примерно:
<style type="text/css">
.swappers{
position:absolute;
width:500px;
height:500px;
}
#currentimg{
z-index:999;
}
</style>
<div>
<img src="" alt="" id="currentimg" class="swappers">
<img src="" alt="" id="nextimg" class="swappers">
</div>
<script type="text/javascript">
function swap(newimg){
$('#nextimg').attr('src',newimg);
$('#currentimg').fadeOut(
'normal',
function(){
$(this).attr('src', $('#nextimg').attr('src')).fadeIn();
}
);
}
</script>