我发布了大量代码以防止出现任何问题,但问题是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>");
}
});
});
答案 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
两个问题:
$($thisOb).parent(
不存在。变量为$thisOb
thisOb
包装器是多余的。 $()
已被包裹。thisOb
应该这样做。
答案 1 :(得分:3)
您遇到逻辑错误:
$($thisOb).parent().prev()
应该是:
thisOb.parent().prev()
这是拼写错误还是?我已移除了围绕$()
的{{1}},因为它毫无意义。它已经是一个jQuery对象了。