使用ajax更改内容后,按键进入jquery不会触发

时间:2013-02-16 06:53:48

标签: javascript jquery html ajax django

我有jquery代码使用ajax发送请求,但是在成功函数keypress再次触发后这是我的代码

    $(".id_sort").bind('keypress',function(e){
    if (e.which == 13){
        var index_fix = [];
        var index_ori = [];
        for (i=0;i < $("tbody tr").length; i++){
            index_ori.push(i);
        }
        $(".id_sort").each(function(){
            index_fix.push(Number($(this).val())-1); 
        });
        if (JSON.stringify(index_fix) !== JSON.stringify(index_ori)){
            data = { key : 'sort', index : JSON.stringify(index_fix)};
            $.ajax({
                url : "/ajax/",
                data : data,
                type : "POST",
                cache : false,
                success : function (resp){
                        $(".data").html(resp);
                        // what should i do here..keypress enter doesn't work in second    time
                } 
            });     
        }
        else {
            alert("data sama coy");
        }
    }
});

2 个答案:

答案 0 :(得分:0)

检查浏览器控制台是否存在JavaScript错误。我怀疑在第一次按键后,JavaScript可能会抛出错误并且不再运行此代码。

如果类.id_sort的任何字段除了空白之外还有任何内容,当你转换为数字时你将获得NaN并且当你将值传递给服务器时,它是否会接受NaN值?

答案 1 :(得分:0)

听起来像你绑定的dom节点可能会被$(".data").html(resp);电话替换/覆盖。绑定到事件仅适用于已在dom中的节点。

因此,如果是这种情况,那么您需要在更换dom后重新绑定成功回调,或者可以将click事件绑定到更高的节点。例如:$(".data").on("keypress", ".id_sort", function() { ... });