我想知道一旦发出请求后如何访问此特定表单元素的$(this)。我对这里的范围有点不清楚。
赞赏任何人的眼睛!
干杯
代码在这里:
$('form', document).on('submit', function(event) {
event.preventDefault();
var self = $(this);
$(this).attr('disabled', 'disabled');
var temp_url = $(this).find(".web_url");
var lasturl;
$.each(temp_url,function(key,object){
if(key==(temp_url.length-1))
{
lasturl = object.value;
}
});
var temp_wdth = $(this).find(".width");
var lastwdth;
$.each(temp_wdth,function(key,object){
if(key==(temp_wdth.length-1))
{
lastwdth = object.value;
}
});
var temp_hgth = $(this).find(".height");
var last_hgth;
$.each(temp_hgth,function(key,object){
if(key==(temp_hgth.length-1))
{
last_hgth = object.value;
}
});
var weburl = lasturl;
var width = lastwdth;
var height = last_hgth;
var dee = <?php echo $deet[0]->id; ?>;
$.post( "mde", { weburl: weburl, width: width, height: height, dee: dee })
.done(function( data ) {
u = data;
if (u == 'url not set')
{
alert(u);
}
else
{
self.hide();
console.log(u);
$.get(u);
}
});
});
答案 0 :(得分:0)
简单的选择是添加&#39; var self = this&#39;在顶部。然而,这是一个无视javascript内置的上下文功能的黑客。一个更好的选择是使用javascript,因为它打算使用并在$ .post()中的匿名函数上实现.bind()。
创建函数时,您可以使用.bind()明确告诉javascript运行它的上下文。
这是一个例子。假设我们有一个保存到变量bob的对象。它有一个名称&#39;,其值为&#34; Bob&#34;。
bob = {name: "Bob"}
我们希望制作一个返回鲍勃名字的功能。所以我们可以创建一个返回&#39; this.name&#39;并将其绑定到bob对象。
function introduceBob(){
return this.name
}.bind(bob)
通过将它绑定到bob,该函数将执行,就像它是bob对象的一部分一样。任何事情都发生在这个&#39;将引用该对象。当我们致电introduceBob()
时,它会返回'Bob'
。
在您的情况下,我们希望在深入研究匿名函数时维护当前上下文。换句话说,我们想要这个&#39;在该匿名函数中引用与&#39;这个&#39;相同的对象。在.on()函数中。为此,您可以更改此代码:
$.post( "mde", { weburl: weburl, width: width, height: height, dee: dee })
.done(function( data ) {
u = data;
if (u == 'url not set')
{
alert(u);
}
else
{
console.log(u);
$.get(u);
}
});
到此代码:
$.post( "mde", { weburl: weburl, width: width, height: height, dee: dee })
.done(function( data ) {
u = data;
if (u == 'url not set')
{
alert(u);
}
else
{
console.log(u);
$.get(u);
}
}.bind(this));
简单的改变吧?现在&#39;这个&#39;匿名函数内部将使用相同的上下文作为&#39;这个&#39;在.on()函数的其余部分。
注意:你仍然需要jQuery选择&#39;这个&#39;为了在其上调用jQuery方法。
.bind(),上下文和/或范围的其他资源:
.bind() on MDN。
Ryan Morr's Understanding Scope and Context in Javascript