клонирование делает то же самое, что и клонирование родителей

== тесты для ссылочного равенства (независимо от того, являются ли они одним и тем же объектом).

.equals() тесты для равенства значений (независимо от того, являются ли они логически «равными»).

Objects.equals () проверяет наличие null перед вызовом .equals(), поэтому вам не нужно (доступно с JDK7, также доступным в Guava ).

String.contentEquals () сравнивает содержимое String с содержимым любого CharSequence (доступно с Java 1.5).

Следовательно, если вы хотите проверить, имеет ли две строки одно и то же значение, вы, вероятно, захотите использовать Objects.equals().

// These two have the same value
new String("test").equals("test") // --> true 

// ... but they are not the same object
new String("test") == "test" // --> false 

// ... neither are these
new String("test") == new String("test") // --> false 

// ... but these are because literals are interned by 
// the compiler and thus refer to the same object
"test" == "test" // --> true 

// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true

// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true

Вы почти всегда хотите использовать Objects.equals(). В редкой ситуации, когда вы знаете, что имеете дело с интернированными строками, вы можете использовать ==.

Из JLS 3.10. 5. Строковые литералы :

Кроме того, строковый литерал всегда ссылается на тот же экземпляр класса String. Это связано с тем, что строковые литералы, или, в более общем смысле, строки, которые являются значениями константных выражений ( §15.28 ), «интернированы», чтобы обмениваться уникальными экземплярами, используя метод String.intern.

. Подобные примеры также можно найти в JLS 3.10.5-1 .

1
задан ronies 10 March 2019 в 02:31
поделиться

1 ответ

вам нужно исправить html, и селектор jQuery $('.form1').find('.all-rule .formRule1') будет применяться ко всем .formRule1, поэтому вам нужно указать родителя. проверьте этот код ниже:

$(document).ready(function(){
		$(document).on( "click", "a#addhewan", function() {
			var confirm = window.confirm('Yakin menambah data hewan??');            
			if(confirm == true){                
			    var newForm = $('.form1 .data_hewan:first').clone();            
                newForm.find('.show-rule').html('');
				newForm.insertBefore('.newForm');
	            // $('.master-hewan').addClass('hidden');        
	        }
	    });

		$(document).on("change","#pet_name",function(){
			var data = $(this).parent();
			if($(this).val() == 1){
				var form1 = data.find('.all-rule .formRule1').clone().removeClass('hidden');
				form1.appendTo(data.find('.show-rule'));
			}
		})
	});
.hidden{
		display: none;
	}
<!DOCTYPE html>
<html>
<head>
	<title>fdsjf</title>
	<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
	<div class="form1">
		<div class="data_hewan">
			<select name="pet" class="form-control" id="pet_name">
				<option value="" selected="selected">Pilih Ras Hewan</option>
				<option value="1">Korean Jindo</option>
				<option value="2">Siberian Husky</option>
				<option value="3">Maine Coon</option>
			</select>

			<div class="all-rule hidden">
				<div class="formRule1 hidden">
					<span>halo</span>
				</div>
				<div class="formRule2 hidden">
					<span>eooo</span>
				</div>
			</div>
			<div class="show-rule">
			</div>
		</div>
		<div class="newForm"></div>
		<a id="addhewan" name="add" id="addhewan">Add Hewan</a>
	</div>

	
</body>
</html>

0
ответ дан Atmahadli 10 March 2019 в 02:31
поделиться
Другие вопросы по тегам:

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