Javascript 为jquery事件使用未声明的属性
此代码用于弹出一组复选框,这些复选框是在选择值为Javascript 为jquery事件使用未声明的属性,javascript,jquery,Javascript,Jquery,此代码用于弹出一组复选框,这些复选框是在选择值为up的radiobox时生成的 // Experiment $("input[name='production-level']").on('change', function() { var production = $(this).val(); var result = ''; if(production == 'Up') {
up
的radiobox时生成的
// Experiment
$("input[name='production-level']").on('change', function() {
var production = $(this).val();
var result = '';
if(production == 'Up') {
result = '<p class="question">Reasons why it is '+ production +'. Click as many as apply.</p>'
+ '<input type="checkbox" name="production-rsn[]" value="Increase in demand" required>Increase in demand <br/>'
+ '<input type="checkbox" name="production-rsn[]" value="Expected increase in demand">Expected increase in demand <br/>'
+ '<input type="checkbox" name="production-rsn[]" value="Fullfillment of past orders">Fulfillment of past orders <br/>'
+ '<input type="checkbox" name="production-rsn[]" value="Increased marketing activity">Increased marketing activity <br/>'
+ '<input type="checkbox" name="production-rsn[]" value="other" />Other';
}
$('#production').html(result);
});
问题是文本框不会追加!有什么想法吗?在动态创建需要使用的元素时。您必须使用委托事件方法 i、 e 范例
$('#production').on('change', "input[name='production-rsn[]']", function(){
//Your code
});
您应该使用最接近的静态容器来代替文档
。在您的案例中,它是“#production”
委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委托事件处理程序时保证存在的元素,我们可以使用委托事件将单击事件绑定到动态创建的元素,并避免频繁附加和删除事件处理程序
由于您的
input
元素已动态添加到DOM中,因此在将这些事件附加到这些新创建的input
之前,所有事件都将不可用,您可以使用实现:
事件委派允许我们将单个事件侦听器附加到
父元素,将为与选择器匹配的所有子元素激发,
无论这些孩子现在存在还是将来被添加
$('#production')。关于('change',“输入[name='production-rsn[]”),函数(){
var结果=“”;
//检查所选选项是否为“其他”
如果(this.value==“其他”){
结果='';
}
$('#production')。追加(结果);
});
谢谢你的回答。我还有一个问题,当复选框不再选中时,如何删除文本框?@Carnal,您可以使用此选项。选中,它将返回true或false(无论复选框是否选中)。根据你的要求做些改变他们,我希望我能给出两个正确的答案,但这里有一个+1供你回答D
$(document).on(event, selector, callback_function)
$('#production').on('change', "input[name='production-rsn[]']", function(){
//Your code
});
$('#production').on('change', "input[name='production-rsn[]']", function () {
var result = '';
//check if the selected option is others
if (this.value === "other") {
result = '<input id="productionOther" maxlength="30" minlength="3" name="production-other" type="text"/>';
}
$('#production').append(result);
});