Id选择器不适用于输入类型提交

时间:2017-02-14 17:18:24

标签: javascript jquery

当我点击总按钮时,我正在尝试读取一个表,该按钮是在ajax调用上创建的,我尝试使用id属性和输入类型提交选择器,但是我无法读取按钮,但是当我试图调用按钮上的javascript函数单击调用javascript函数,任何人都可以解释这个,我应该如何使用jquery选择器阅读

$.ajax({
        type:'POST',    
        url:'/pos/addproduct',
        dataType: "json",
        data:JSON.stringify(order),
        contentType: "application/json; charset=utf-8",
        success:
            function(data){
             i++;
             console.log(i);
            $.each(data,function(index,value){
                var temp = "qty" + data[index].barcodeid.trim();
                var qtyitm=$("#"+temp);

                if(qtyitm.length != 0){
                    qtyitm.html(data[index].qty);
                    //("#price"+(data[index].barcodeid.trim())).html(data[index].price);
                    temp = "price" + data[index].barcodeid.trim();
                    qtyitm = $("#"+temp);
                    qtyitm.html(data[index].price);
                }
                else{
                    var row=$("<tr><td>"+data[index].oid+"</td>"+"<td>"+data[index].pname.trim()+
                            "</td>"+
                            "<td id=\"qty"+data[index].barcodeid.trim()+"\">"+data[index].qty+"</td>"+
                            "<td id=\"price"+data[index].barcodeid.trim()+"\">"+data[index].price+"</td>"+
                            "<td>"
                            +data[index].barcodeid.trim()+"</td></tr>"

                    );
                    $("#firstrow").after(row).removeClass("hidden");
                    }

            })
            if(i==1){
            var row1=$("<tr><td>"+'<input type="submit" id="calculateTotal" value="Total">'+"</td></tr>");
            $("#order tbody").append(row1);
            }
        }

})
});
$('input[id="calculateTotal"]').click(function(event){
    alert("hello");
})

id selector not working

2 个答案:

答案 0 :(得分:3)

由于提交按钮#calculateTotal是通过js代码动态添加的:

$("<tr><td>"+'<input type="submit" id="calculateTotal" value="Total">'+"</td></tr>");

您应该使用事件委派 on() click事件附加到其中,例如:

$('body').on('click', 'input[id="calculateTotal"]', function(event){
    alert("hello");
})

希望这有帮助。

答案 1 :(得分:1)

浏览器会在您的页面加载时解析您的javascript代码,并在初始加载时将事件侦听器附加到DOM元素(在这种情况下,您只需将按钮附加到现有DOM树中就不会退出[因此没有事件限制])< / p>

解决方案是使用$('document').on('event','selector','callback')所以代码:

var row1=$("<tr><td>"+'<input type="submit" id="calculateTotal" value="Total">'+"</td></tr>");
            $("#order tbody").append(row1);

和Js:

$('document').on('click','#calculateTotal',function(){ //do your stuff here });

希望它有所帮助......:D