请考虑以下代码:
$(".xpand").click(function()
{
var target = $(this).parent().parent().find(".msg");
target.html("loading...");
$.get(src, function(data)
{
target.html(data);
$(this).addClass("rotated");
}).error(function()
{
target.html("<b>Error in loading contents. Try again.</b>");
});
});
正在发生的事情是,在ajax成功之后,只有当点击的“.xpand”是其他“.xpand”中的第一个时,“旋转”类才被添加到“.xpand”。 如果我选择单击第二个,第三个或最后一个,ajax仍会处理,但不会添加“旋转”类。
我在这里做错了什么?
感谢那些愿意回答的人:)
答案 0 :(得分:3)
您需要将$(this)
存储在另一个变量中,才能在$.get()
方法中访问它:
$(".xpand").click(function () {
var target = $(this).parent().parent().find(".msg"),
that = $(this);
target.html("loading...");
$.get(src, function (data) {
target.html(data);
that.addClass("rotated");
}).error(function () {
target.html("<b>Error in loading contents. Try again.</b>");
});
});
答案 1 :(得分:0)
$(".xpand").click(function () {
var target = $(this).parent().parent().find(".msg");
target.html("loading...");
var inside = this;
$.get(src, function (data) {
target.html(data);
$(inside).addClass("rotated");
}).error(function () {
target.html("<b>Error in loading contents. Try again.</b>");
});
});
&#39;这&#39;在您使用它的上下文中,指的是请求而不是发出事件的事物。要解决此问题,请在发出请求之前存储此副本。