==
сравнивает ссылки на объекты.
.equals()
сравнивает значения String.
Иногда ==
дает иллюзии сравнения значений String, как в следующих случаях:
String a="Test";
String b="Test";
if(a==b) ===> true
Это связано с тем, что при создании любого строкового литерала JVM сначала ищет этот литерал в пуле строк, и если он найдет совпадение, эта же ссылка будет передана новой String. Из-за этого получаем:
(a == b) ===> true
String Pool
b -----------------> "test" <-----------------a
Однако ==
не выполняется в следующем случае:
String a="test";
String b=new String("test");
if (a==b) ===> false
В этом случае для new String("test")
оператор new String будет создан в куче, и эта ссылка будет указана на b
, поэтому b
будет дана ссылка на кучу, а не на String pool.
Теперь a
указывает на String в пуле String, а b
указывает на String в куче. Из-за этого мы получаем:
, если (a == b) ===> false.
String Pool
"test" <-------------------- a
Heap
"test" <-------------------- b
Пока .equals()
всегда сравнивает значение String, поэтому дает true в обоих случаях:
String a="Test";
String b="Test";
if(a.equals(b)) ===> true
String a="test";
String b=new String("test");
if(a.equals(b)) ===> true
Таким образом, использование .equals()
всегда лучше.
Чтобы избежать этой проблемы, вместо использования события onClick для тега <div>
, вы должны использовать скрипт jQuery:
1) Переопределенный шаблон notices/success.php
file [ 116] (отрывок) :
<?php foreach ( $messages as $message ) : ?>
<div class="woocommerce-message" role="alert">
<span>
<?php
echo wc_kses_notice( $message );
?>
</span>
</div>
<div class="message-click">TEST</div>
<?php endforeach; ?>
2) Сценарий jQuery:
add_action( 'wp_footer', 'message_onclick_event');
function message_onclick_event() {
?>
<script>
jQuery(function($){
$(document.body).on('click', 'div.message-click', function(){
alert('LOL');
})
});
</script>
<?php
}
Код помещается в файл function.php вашего активного ребенка тема (или активная тема), или во внешнем зарегистрированном файле JS.
3) Вывод html:
<div class="woocommerce-message" role="alert">
<span>Hello World</span>
</div>
<div class="message-click">TEST</div>
4) Скриншот (при нажатии на «ТЕСТ») : [ 1114]