#jquery
#jquery
Вопрос:
У меня есть этот HTML с помощью Jquery
<html>
<head>
<script type="text/javascript" src="js/accordian/jquery-1.9.1.js">
</script>
<script type="text/javascript">
$(document).on("click", ".checkboxclas", function(e) {
$(".Topping-details").hide();
var divdata = $("div.activateUiHTML").html();
$("#ordersdiv").prepend(divdata);
});
</script>
</head>
<body>
<div class="activateUiHTML" data-role="collapsible">
<div class="prd-items-detials">
<form><input type="checkbox" class="checkboxclas" name="checkbox-mini-0" id="59" >
<label class="testtt" for="checkbox-mini-0">Ice Cream Butter Scotch</label>
</form>
<div class="Topping-details" id="59">
<section id="topping_tsection_59">
<i id="topping-close"></i>
<aside>
<section class="secclass"><a href="#">Honey with Chocolate Sauce 10 ML</a></section>
</aside>
</section>
</div>
</div>
</div>
<div id="ordersdiv"></div>
</body>
</html>
При нажатии на флажок у меня есть прослушиватель, в котором я добавляю данные в div с именем ordersdiv
Я поражен в одном месте.
Когда я нажимаю на флажок, я хочу скрыть html, присутствующий внутри класса Topping-details, когда он добавляется в ordersdiv, и он не должен быть закрыт в activateUiHTML div
Прямо сейчас, когда я использовал $(".Topping-details").hide();
его, он скрывается в обоих div.
может кто-нибудь, пожалуйста, помочь мне, как решить это??
Ответ №1:
Вам нужен другой селектор, чтобы спрятаться .Topping-details
внутри #ordersdiv
Используйте $("#ordersdiv .Topping-details").hide();
после добавления html.
Попробуйте это,
$(document).on("click", ".checkboxclas", function(e) {
var divdata = $("div.activateUiHTML").html();
$("#ordersdiv").prepend(divdata);
$("#ordersdiv .Topping-details").hide();
});
Примечание :
Ваше добавление html генерирует флажки с дублированным идентификатором.
Комментарии:
1. Обратите внимание, что вы также изменили привязку, чтобы любые совпадающие
.checkboxclas
элементы, добавленные в DOM после этого запуска, не вызывали этот обработчик. Возможно, OP использовался.on()
по какой-то причине.2. Ооо, спасибо, что указали на это, я только что заметил
id="59"
в разметке OPs3. Хороший улов на
id
дубликатах в коде OP, я этого не заметил. Но я все же рекомендую не менять селектор привязки таким образом. Почему бы не использовать ту же делегированную привязку, которую использовал OP? Была ли причина, по которой вы его изменили?4. Упс, еще раз извините, я просто копировал код из своей скрипки. Делегирование является наиболее важным в этом случае. Глупые ошибки
5. Это сработало, большое вам спасибо за объяснение. это очень помогло .
Ответ №2:
Если я правильно понимаю, вы хотите скрыть только «Topping-details» div
, которые являются дочерними элементами «ordersdiv» div
? Если это так, вы можете просто использовать оба из них в селекторе:
$("#ordersdiv .Topping-details").hide();
Это скроет только элементы с классом «Topping-details», только если они также являются дочерними элементами элемента «ordersdiv».