Jquery回调函数变量总是本地的
Jquery callback function variables always local?
为什么我不能将$('#temizle').inerHTML设置为字符串'Temizlendi';代码破解根本不起作用。但在比赛结束前,我可以设置它。我很困惑。
$('#temizle').click(function(){
$.post('OdbcConnection.php',
{islem: 'Temizle'},
function(data, status){
if(status == 'success'){
alert(status);
$('#temizle').innerHTML = 'Temizlendi';
}else{
this.innerHTML = 'Hata Var';
}
});
//this.innerHTML = 'Temizlendi';
});
简单的答案是因为innerHTML
是本机DOM节点方法,而不是jQuery方法,因此在诸如$('#temizle')
之类的jQuery对象上调用它只会在jQuery对象中设置一个新的innerHTML
属性。它在$.post
调用之外工作,因为this
继承了本机DOM节点,而不是jQuery对象。
尝试使用$.html()
方法而不是innerHTML
:
$('#temizle').html('Temizlendi');
或者,也可以将$.post
范围之外的内容从this.innerHTML
重写为$(this).html()
,因为封装this
会将其转换为jQuery对象。
如果您必须使用innerHTML
而不是jQuery方法,如其他答案中所述,您也可以通过使用get()
方法或访问jQuery对象的0索引处的节点从jQuery对象获得DOM节点:
$( '#temizle' ).get(0).innerHTML = 'Foo';
$( '#temizle' )[0].innerHTML = 'Bar';
尽管这会有点违背使用jQuery的目的。
需要记住的另一件事是,this
的值取决于当前作用域,因此当在$.post
内部调用this
时,它将不等于您的元素。为了解决这个问题,你可以将你的元素缓存在你的后调用范围之外,这样你就可以很容易地在回调中引用它:
$('#temizle').click(function(){
var $el = $( this );
$.post('OdbcConnection.php',
{islem: 'Temizle'},
function(data, status){
if(status == 'success'){
alert(status);
$el.html( 'Temizlendi' );
}else{
$el.html( 'Hata Var' );
}
});
//$el.html( 'Temizlendi' );
});
为了更好地了解this
,我强烈建议在这里查看它的MDN参考资料。
alert(status)
?如果不是,这只是意味着您的POST请求失败。
如果它确实失败了,请检查php文件的路径是否正确。你现在拥有的是一条相对的道路,也许你需要把它变成一条绝对的道路,即:将'OdbcConnection.php'
更改为'/OdbcConnection.php'
或'/{SOME_FOLDER}/OdbcConnection.php'
首先必须编写
$('#temizle').html('Temizlendi') //not $('#temizle').innerHTML='Temizlendi'
或者你可以使用
$('#temizle')[0].innerHTML='emizlendi'
第二:你使用
this.innerHTML = 'Hata Var';
但是"this"是针对函数的,而不是针对$('#temizle')元素
当您使用$('#temizle').InnerHTML时,您正在调用方法InnerHTMLtml()方法:$('#temizle')html('emizlendi');
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定