我很困惑为什么这段代码不起作用:
HTML:
<li><a id="faktura-generate" rel="regular">Faktúra</a></li>
<li><a id="proforma-generate" rel="proforma">Zálohová faktúra</a></li>
JS:
$('#faktura-generate, #proforma-generate').live('click', function () {
var type = $(this).attr('rel');
$.ajax({
url: 'index.php?route=sale/order/superfaktura&token=<?php echo $token; ?>&order_id=<?php echo $order_id; ?>&type=' + type,
dataType: 'json',
beforeSend: function () {
$(this).after('<img src="view/image/loading.gif" class="loading" style="padding-left: 5px;" />');
}
});
});
我想在用户点击其中一个链接后显示一个小的加载图标。 $("#proforma-faktura").after(...)
正在运行,但$(this).after(...)
没有。
答案 0 :(得分:3)
this
并不是指您传递给'beforeSend'的匿名函数中的元素。
您可以尝试在闭包中捕获它
$('#faktura-generate, #proforma-generate').live('click', function () {
var that = this, // capture 'this' here
type = $(this).attr('rel');
// make a function with access to 'that'
var myFun = function (data) {
$(that).after('<img src="view/image/loading.gif" class="loading" style="padding-left: 5px;" />');
};
$.ajax({
url: 'index.php?route=sale/order/superfaktura&token=<?php echo $token; ?>&order_id=<?php echo $order_id; ?>&type=' + type,
dataType: 'json',
beforeSend: myFun
});
});
试一试。
也不再支持直播,尝试另一种方式。 (弃用的版本:1.7,删除:1.9)