无法使用jQuery设置HTML

时间:2012-02-02 16:53:43

标签: javascript jquery

出于某种原因,删除textbox元素后,我的脚本没有写出文本。我错误地使用.html还是其他错误?

        $('.time').click(function () {
            var valueOnClick = $(this).html();
            $(this).empty();
            $(this).append("<input type='text' class='input timebox' />");
            $('.timebox').val(valueOnClick);
            $('.timebox').focus();
            $('.timebox').blur(function () {
                var newValue = $(this).val();
                var dataToPost = { timeValue: newValue };
                $(this).remove('.timebox');
                if (valueOnClick != newValue) {
                    $.ajax({
                        type: "POST",
                        url: "Test",
                        data: dataToPost,
                        success: function (msg) {
                            alert(msg);
                            $(this).html("88");
                        }
                    });
                } else {
                    // there is no need to send 
                    // an ajax call if the number
                    // did not change
                    alert("else");
                    $(this).html("88");
                }
            });
        });

好的,感谢评论,我发现我引用了错误的东西。我的解决方案是更改模糊功能,如下所示:

            $('.timebox').blur(function () {
                var newValue = $(this).val();
                var dataToPost = { timeValue: newValue };
                if (valueOnClick != newValue) {
                    $.ajax({
                        type: "POST",
                        url: "Test",
                        data: dataToPost,
                        success: function (msg) {
                        }
                    });
                } else {
                    // there is no need to send 
                    // an ajax call if the number
                    // did not change
                }
                $(this).parent().html("8");
                $(this).remove('.timebox');
            });

3 个答案:

答案 0 :(得分:3)

您的成功处理程序中的

$(this)引用了msg,而不是$('.timebox')(或者您要将html追加到的任何元素)

答案 1 :(得分:0)

$(this) = '.timebox'  element but you have removed it already, 

  $.ajax({
                        type: "POST",
                        url: "Test",
                        data: dataToPost,
                        success: function (msg) {
                            alert(msg);
  $(this).html("88");  // This = msg
                        }

and 

 else {
                    // there is no need to send 
                    // an ajax call if the number
                    // did not change
                    alert("else");
                    $(this).html("88"); // this = '.timebox'  element but you have removed it already, 
                }

答案 2 :(得分:0)

如果输入功能,则此值会发生变化。所以当你在模糊函数处理程序中使用它时,它实际上指向'.timebox'

    $('.time').click(function () {
        var valueOnClick = $(this).html();
        var $time=$(this);//If you want to access .time inside the function for blur
                          //Use $time instead of$(this)

        $(this).empty();
        $(this).append("<input type='text' class='input timebox' />");
        $('.timebox').val(valueOnClick);
        $('.timebox').focus();
        $('.timebox').blur(function () {
            var newValue = $(this).val();
            var dataToPost = { timeValue: newValue };
            $(this).remove(); //Since $(this) now refers to .timebox
            if (valueOnClick != newValue) {
                $.ajax({
                    type: "POST",
                    url: "Test",
                    data: dataToPost,
                    success: function (msg) {
                        alert(msg);
                        $(this).html("88");
                    }
                });
            } else {
                // there is no need to send 
                // an ajax call if the number
                // did not change
                alert("else");
                $(this).html("88");
            }
        });
    });