희망 사항이 올바르게 나타났습니다. 그래서 일부 CMS가 제품 옵션으로로드되는 라디오가 있습니다. 같은 페이지에서 AJAX 필터를 사용하면 정확히 동일한 라디오를 정확한 위치에로드 할 수 있습니다.동적으로 생성 된 라디오를 사용하여 var에 숫자 (+ =)를 추가 할 수 없습니다.
이 동적으로 생성 된 라디오로 전체 가격을 변경할 수는 없지만 이전 제품은 정상적으로 작동합니다. 가장 잘 이해할 수 있도록 스 니펫을 실행하십시오.
$('#add').on('click', function() {
if (!$('#price_3').length) {
$('#multiply').before('<input type="radio" name="radios" id="price_3" value="3"> <label for="price_3">Generated by AJAX</label> <br><br>');
$(this).remove();
}
})
$("input").bind("change keyup", function() {
var price = 100;
if ($('#price_1').is(':checked')) {
price += 100;
};
if ($('#price_2').is(':checked')) {
price += 200;
};
if ($('#price_3').is(':checked')) {
price += 300;
$(".total").append(" <- doesn't change the price");
$(".info").html("<br><br> Actually adds +300, but not live");
};
if ($('#multiply').is(':checked')) {
price *= 2;
};
$(".total").html(price);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post">
<input type="radio" name="radios" id="price" value="0" checked>
<label for="price">I'm a base</label>
<br>
<input type="radio" name="radios" id="price_1" value="1">
<label for="price_1">Here by default</label>
<br>
<input type="radio" name="radios" id="price_2" value="2">
<label for="price_2">Here by default 2</label>
<br>
<input type="checkbox" name="multiply" id="multiply" value="multiply">
<label for="multiply">Multiply by 2</label>
<br>
<input type="button" id="add" value="Add a radio">
<br>
<span class="total">100</span>
<span class="info"></span>
</form>
편집 1. 실제로 가 추가를 수행하지만 단지 change
에 표시되지 않기 때문에 일이 ajax
또는 on
를 비동기 것으로 간주되지 않는다. 나는 사건으로 무언가를 엉망으로 만들고있어.
가능한 중복 http://stackoverflow.com/questions/14220321/how-do- i-return-the-asynchronous-call) – Liam
'.on()'은 비동기 FYI – Liam
이것은 수 차례 회답되었습니다. 이벤트 핸들러를 위임해야합니다. 동적으로 추가 된 DOM 요소에서 이벤트가 작동하지 않습니다. jQuery 문서에있다. 바인딩 할 때 –