【发布时间】:2013-06-26 18:39:11
【问题描述】:
我很困惑为什么这段代码不起作用:
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(...) 无效。
【问题讨论】:
-
你忘记了美元符号?
-
并且 live() 在较新版本的 jQuery 中已被弃用和删除。
-
而
this可能是$.ajax,而不是被点击的元素,因为它在另一个函数范围内。 -
在 AJAX 选项中使用
context: this -
@Ian - 听起来像是一个答案!不知道
context也可以在beforeSend处理程序中工作,我确信它只在success和error中工作,因为我前段时间一直在努力,但是测试它,它似乎确实工作正常。
标签: javascript jquery html