问题非常简单,我不能在我的jQuery ajax调用的成功部分引用$(this)
,例如这不起作用(隐藏点击的元素):
$('.assigned').click(function (event) {
event.preventDefault();
$.post("@Url.Action("method", "controller")",
{
TicketId: $(this).data("ticketid"),
},
function (data, status) {
$(this).hide();
});
});
值得注意的是数据已发送。然而,这隐藏了元素:
$('.assigned').click(function (event) {
event.preventDefault();
$(this).hide();
$.post("@Url.Action("method", "controller")",
{
TicketId: $(this).data("ticketid"),
},
function (data, status) {
});
});
为什么会这样?
在FireFox中测试
答案 0 :(得分:2)
你必须问问自己,你在这个代码中的哪个位置? 这个适用于什么?
您目前在:
function(data, status){
}
或:
$.post("@Url.Action("method", "controller")",
{
TicketId: $(this).data("ticketid"),
}
因此此将适用于您的功能,而不适用于您的元素。
只是做:
$('.assigned').click(function (event) {
event.preventDefault();
var $this = $(this);
$this.hide();
$.post("@Url.Action("method", "controller")",
{
TicketId: $this.data("ticketid"),
},
function (data, status) {
$this //will work here
});
});
答案 1 :(得分:0)
在点击时将this
分配给变量,然后使用变量隐藏它:
$('.assigned').click(function (event) {
event.preventDefault();
var $t = $(this);
$.post("@Url.Action("method", "controller")",
{
TicketId: $(this).data("ticketid"),
},
function (data, status) {
$t.hide();
});
});