Jquery特定场景中的$ .post问题

时间:2011-10-20 09:09:55

标签: javascript jquery

让我先分享我的jQuery部分

$(".btnUpdateInput").click(function() {
            //alert("Update");
            var BldDocumentId = $("#BldDocId").val();

            var BldinstructionId = $("#BldIPInstnId").val();
            var InputFieldId = $("#InputFieldId").val();
            var InputFieldValue = jQuery.trim($(this).parent().prev().text()); //$("#InputFieldValue").val();
            var InputFieldUserValue = jQuery.trim($(this).prev().val()); // $(".user_input_value").val();
            alert(BldDocumentId + "," + BldinstructionId + "," + InputFieldId + "," + InputFieldValue + "," + InputFieldUserValue);

            var postResult;
            alert($(this).get());
            $.post("/Build/UpdateInputField",
                { bldDocId: BldDocumentId, bldInstnId: BldinstructionId, inputFieldId: InputFieldId, inputFieldValue: InputFieldValue, inputFieldUserValue: InputFieldUserValue },
                function(result) {
                postResult = result;
                    //Either this should function**
                    alert($(this).get()); // returned Object[Object] but expected the clicked button
                    alert($(this).parent().get());// returned null
                    alert($(this).parent().next().get());//returned null
                    alert($(this).parent().next().children().first().get());// returned null

                    // $(this).parent().next().show();
                    // $(this).parent().next().children().first().text(InputFieldUserValue);
                    // $(this).parent().hide();
                });

                alert(postResult);
            //Or this should function**
            if (postResult == true) {
                $(this).parent().next().show();
                $(this).parent().next().children().first().text(InputFieldUserValue);
                $(this).parent().hide();
            }
        });

现在让我解释一下我的问题。我需要显示和隐藏与我点击的按钮“btnUpdateInput”相关的几个div。我尝试了两种方式:1。我在$ .post

的成功部分给出了以下几行
$.post("/Build/UpdateInputField",
                { bldDocId: BldDocumentId, bldInstnId: BldinstructionId, inputFieldId: InputFieldId, inputFieldValue: InputFieldValue, inputFieldUserValue: InputFieldUserValue },
                function(result) {
                postResult = result;
                    //Either this should function**
                    alert($(this).get()); // returned Object[Object] but expected the clicked button
                    alert($(this).parent().get());// returned null
                    alert($(this).parent().next().get());//returned null
                    alert($(this).parent().next().children().first().get());// returned null

                    // $(this).parent().next().show();
                    // $(this).parent().next().children().first().text(InputFieldUserValue);
                    // $(this).parent().hide();
                });

2。或者获取postResult的值并进行比较并在那里做同样的事情。代码如下:

 if (postResult == true) {
                $(this).parent().next().show();
                $(this).parent().next().children().first().text(InputFieldUserValue);
                $(this).parent().hide();
            }

对我来说都不适用。在凌晨1点没有得到$(this)作为我点击的按钮'btnUpdateInput'和2. postResult的值是未定义的,因为没有延迟,所以postResult被分配给post action的结果。

请帮我解决任何一种情况。

1 个答案:

答案 0 :(得分:1)

这是您当前IN中的元素。所以在SUCCES中它的回归。

所以在方法一你可以做到:

$(".btnUpdateInput").click(function(e) {
var self = e;
//code
alert($(self).get()); // returned Object[Object] but expected the clicked button
alert($(self).parent().get());// returned null
alert($(self).parent().next().get());//returned null
alert($(self).parent().next().children().first().get());// returned null
}

似乎self也被用作默认....

请改为尝试:

$(".btnUpdateInput").click(function(e) {
var myButton = $(this);
//code
alert($(myButton).get()); // returned Object[Object] but expected the clicked button
alert($(myButton).parent().get());// returned null
alert($(myButton).parent().next().get());//returned null
alert($(myButton).parent().next().children().first().get());// returned null
}