将THIS从一个功能发送到另一个功能

时间:2015-12-03 16:16:41

标签: javascript jquery ajax

我发布了大量代码以防止出现任何问题,但问题是this对象在ajax success内部是不同的,并且在它之外是不同的。

我尝试将this放入var thisOb并在ajax success函数中使用它。 代码给了我"thisOb is not defined"的消息。有没有什么不同的方法可以将this从ajax外部转移到成功函数中?

$(".editButton").on("click", function(){

    var textId = $(this).parent().parent().attr("id");
    var thisOb = $(this);

         $.ajax({
     type     : "POST",
     url      : "/get-textarea",
     data     : {
         textId: textId
     },
     success : function(msg) {
           $($thisOb).parent().prev().replaceWith("<textarea class='editArea' placeholder='"+msg+"'></textarea>");

      }

    });

});

2 个答案:

答案 0 :(得分:4)

您已关闭,但需要额外Here is the code (I have removed everything except whats important to simply show the code): window[ns] = window[ns] || {}; (function ($, moment, app) { 'use strict'; // Private Methods var nameSpace = 'global', globalDataObject = null, notifyRenderCallbacks = function (pageName) { if ($('.js-calendar').length) { $('.js-calendar').datetimepicker({ format: 'DD MMMM YYYY', dayViewHeaderFormat: 'MMMM YYYY', icons: { next: 'icon icon-chevronright', previous: 'icon icon-chevronleft' }, enabledDates: moment().add(30, 'days') }); } }, // If this module requires global data app.register(nameSpace, initialize); }(jQuery, moment, window[ns] || {}));或两个:

$

所以现在我们将外部var thisOb = $(this); 包装为jQuery对象。好。

this

两个问题:

  1. $($thisOb).parent( 不存在。变量为$thisOb
  2. thisOb包装器是多余的。 $()已被包裹。
  3. thisOb

    应该这样做。

答案 1 :(得分:3)

您遇到逻辑错误:

$($thisOb).parent().prev()

应该是:

thisOb.parent().prev()

这是拼写错误还是?我已移除了围绕$()的{​​{1}},因为它毫无意义。它已经是一个jQuery对象了。