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);
});