У меня есть JS, который динамически создает новый div (вход внутри формы). Он отлично работает. У меня отдельно есть некоторый jquery, который проверяет выпадающий ввод и показывает отдельный div, если щелкнуть конкретный выбор. Он отлично работает.jquery выбор динамического идентификатора класса внутри динамически созданного div
Если я пытаюсь использовать jquery, чтобы показать отдельный div внутри одного из динамически созданных, он не работает. Первый экземпляр его работает, но ни один из динамически не созданных. После поиска, похоже, мне нужна делегация, но я, похоже, не могу понять ее в моей конкретной ситуации.
JSFiddle: http://jsfiddle.net/Xyzeg/ (измените раскрывающийся список «CPI» в первом поле, чтобы событие исчезло). Сценарий включает в себя другой JS для динамического создания div.
Любые указатели будут оценены по достоинству.
<div style="float:left">
<div id='dynamicInput'>Pension 1: Amount: $<input type='text' name='adjustmentInputs[]' value='0' size='13' maxlength='20'>Start Year:
<input type='text' name='adjustmentInputs[]' value='2032' size='5' maxlength='6'>
<input type='hidden' name='adjustmentInputs[]' value='2100'>
<select name='adjustmentInputs[]'>
<option value='InflationAdjusted'>Inflation Adjusted</option>
<option value='NotInflationAdjusted'>Not Inflation Adjusted</option>
</select>by
<select name='adjustmentInputs[]' class='pensionAdjustment1'>
<option value='CPI'>CPI</option>
<option value='constantPercentage'>Constant %</option>
</select>
<div id='constantPercentageText1' style='display: none'>@ <input type='text' name='adjustmentInputs[]' value='3' size='5' maxlength='6'>%</div>
</div>
<input type="button" value="Add another Portfolio Adjustment" onClick="addInput('dynamicInput');">
</div>
<script>
$("[class*=pensionAdjustment]").change(function() {
var n = $(this).attr('class').replace('pensionAdjustment', '');
var newId = "constantPercentageText" + n;
var selectedItem = $(this).children('option:selected');
if ($(this).val() == 'constantPercentage') {
$("#constantPercentageText" + n).css('display', 'inline');
$("#constantPercentageText" + n).show();
} else {
$("#constantPercentageText" + n).css('display', 'none');
}
});
</script>
Вы должны делегировать события элементу, который существует в момент привязки событий. – Mathletics
Чтобы развернуть комментарий @Mathletics, зайдите в jQuery.on. '$ (document) .on ('change'," [class * = pensionAdjustment] ", function() {...' – dinjas
Итак, вы говорите, потому что динамически созданные divs не существуют до того, как поиск , Я не могу связать события, как я? Какое решение тогда? –