我希望在第二次点击后显示警报。首先在li
然后在div.button
。
HTML
<li onclick="$(document).ShowPosts(4)"></li>
<div class="button">[show posts]</div>
这个函数有一个内部的ajax调用来检索帖子的数量。 成功使用ajax返回数据后,单击按钮,警报就不会显示。
JQUERY
jQuery.fn.ShowPosts = function(id_user) {
$.ajax({
type: 'POST',
url: "posts.php",
data: {
'id_user': id_user
},
success: function(data) {
var total_posts = data;
});
$(".button").on('click', function(e) {
alert(total_posts);
}
});
}
看起来来自buttom的click事件无法识别ajax检索到的变量......出了什么问题?
答案 0 :(得分:2)
当你使用var
声明一个函数时,它的作用域只是函数,所以它不能在它之外访问。
因此,您需要在success
函数之外声明它并在此函数中设置它。只有这样你才能获得正确的价值。
例如,这不起作用,因为a
声明在b
函数内:
function b() {
var a = 8;
}
b();
console.log(a);
&#13;
这也是行不通的(a
的值不会在b
函数范围之外变化)
var a = 8;
function b() {
var a = 9;
console.log('a inside b()', a);
}
b();
console.log('a outside b()', a);
&#13;
因此,您需要在开始时声明它,并在success
回调中覆盖。
var a = 8;
function b() {
a = 9;
console.log('a inside b()', a);
}
b();
console.log('a outside b()', a);
&#13;