试图理解为什么添加到DOM中的AJAX对象返回undefined

时间:2012-03-21 06:22:41

标签: javascript jquery

调用ajax调用时遇到问题,在将ajax数据附加到DOM后,任何引用附加html的Javascript都会返回该对象未定义。

表单使用带有Javascript提交的标签和一些Javascript来修改隐藏字段,这就是eval()所在的原因。

编辑:这是'href'标签的示例以及为什么我在那里有eval:

javascript:document.faultList.sortBy.value='4';document.faultList.sortByPrev.value='3';document.faultList.Action01.value='SetMyRequestItem';

以前的开发人员在我的时间之前创建这个软件/网站的方式,而不是使用REST风格的系统。

这是我的代码:

function ajaxFormUpdate(formID,linkClass){
        $(formID+' '+linkClass).click(function(){
            eval($(this).attr('href'));
            serialised = $(this).closest(formID).serialize();
            $.ajax({
                    type: "POST",
                    url: 'jadehttp.dll?EbdMulti_www_01',
                    data: serialised,
                    success: function(data) {
                        //console.log(data)
                        $(formID).html($(data).find(formID));
                        loadHandlers();
                        }
            });
            return false
        });

    }
    function loadHandlers(){
        ajaxFormUpdate('#faultList','.ajaxLink');
        ajaxFormUpdate('#accessCardList','.ajaxLink');
        ajaxFormUpdate('#facilityList','.ajaxLink');
        ajaxFormUpdate('#carParkingList','.ajaxLink');
        ajaxFormUpdate('#visitorList','.ajaxLink');
    }
    loadHandlers();

1 个答案:

答案 0 :(得分:0)

通过将.html()更改为.replaceWith()(感谢jgauffin让我走上正轨)并使用以下点击处理程序代替标准.click()

来解决此问题
$(".selector_class").live('click', function() { alert("new element clicked"); });