jQuery:无法检索动态创建的DOM元素的属性

时间:2011-04-29 19:07:39

标签: javascript jquery post dynamic

以下是这种情况:我正在编写一个执行CRUD功能的简单AJAX应用程序。当用户双击特定元素时,该元素将更改为文本框,以便他们可以内联编辑。当文本框失去焦点(代码位于下面)时,文本框的值将被POST到更新数据库的PHP脚本。

除了一件事以外,一切都是时髦的。当我创建一个使用AJAX弹出到列表顶部的新记录时,我无法在不刷新页面的情况下编辑该记录。我的意思是,编辑看起来像是已经提交的,但是当你刷新时,它会恢复原状。刷新后,没有问题。

将其归结为:当我尝试在我的表中的新创建的行(在数据库和页面上)上运行以下代码时,编辑似乎是在页面上进行的,但从未进入数据库。

//Make changes on FOCUSOUT
    $('#editable').live('focusout', function(){
        var parentListItem = $(this).parents('li');
        var theText = $(this).val();
        var parentListItemID = parentListItem.parents('ul').attr('id');

        $(this).remove();
        parentListItem.html(theText);
        parentListItem.removeClass('beingEdited');

        $.post("databasefuncs.php?func=edit", { postedMessage: parentListItemID, fullTextContent: theText },
            function(result){
                if(result == 1) {
                    parentListItem.parents('ul').animate({ backgroundColor: 'blue' }, 500).animate({ backgroundColor: '#eeeeee' }, 500);
                } else {
                    alert(result);
                }

            });

    });

2 个答案:

答案 0 :(得分:1)

我想你没有将事件绑定到通过AJAX加载的新DOM元素。

答案 1 :(得分:0)

你的问题是帖子执行但是你所定位的函数(func = edit)永远不会触发,你发送问号之后发送的params永远不会被你的php读取,你发送一个帖子请求并希望它表现得很好比如通过将参数附加到URL来获取,请将您的请求更改为:

$.ajax({
 type: "POST",
 url: "databasefuncs.php",
 data: {func: "edit", postedMessage: parentListItemID, fullTextContent: theText},
 success: function(data, textStatus, jqXHR) {
    if(textStatus === "success") {
      parentListItem.parents('ul').animate({ backgroundColor: 'blue' }, 500).animate({ backgroundColor: '#eeeeee' }, 500);
    }
    else {
       alert(textStatus);
    }
 } 
});

现在在你的PHP中你有$ _POST [“func”] =“编辑”;

希望这很清楚,这有帮助。欢呼声。