- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 ajax 构建一个购物网站。当用户单击“添加到购物车”图像时。小加载图像将显示在“添加到购物车”图像旁边。第一次点击效果很好,图像显示如我所料。但是,第二次和随后的点击会在第一个加载图像上附加更多图像(第 2 次:添加两个加载图像,第 3 次:添加 3 个图像..3 次点击后总共 6 张图像)。我确实使用了 ajaxStop 并删除了第一张图片……不确定发生了什么……需要帮助。非常感谢。
我的javascript代码
// add to cart
$(".addToCart").click(function(e){
$this=$(this);
$tableId=$this.closest('table').attr('id');
$($this).prev().ajaxStart(function(){
$("<img class='loader' src='images/loader.gif'>").insertBefore($this);
});
$($this).prev().ajaxStop(function(){
$($this).prev().remove();
});
HTML
<table>
<tr>
<td width="146" align="right" valign="middle">
<br>
<span id="wasPrice"><?php echo $productPriceWas; ?></span>
<br>
<?php echo "$".$productPrice;?><br>**//I want my image here**<a class="addToCart" href="javascript:void(0);"><img src="images/addToCart.gif" alt="add To Cart"/><a/> </td>
</tr>
</table>
最佳答案
.ajaxStart()
是一个全局性事件。每次单击都会绑定(bind)另一组事件处理程序,这会导致显示 2 个或更多加载图像。您可以尝试使用 .one(types, function() { ... })
事件绑定(bind),每次点击仅触发该代码块一次。
但是,我建议查看 $.ajax()
回调 beforeSend
和 complete
作为为特定 ajax 请求(而不是每个 ajax 请求)绑定(bind)代码的地方。
我通常使用这样的模式:
$(".addToCart").click(function(e){
// you need to use "var" to make sure $this is only available inside this function
var $this=$(this);
// avoid using $ on variables that aren't jQuery objects (this is just a string)
var tableId=$this.closest('table').attr('id');
// insert the element before starting the ajax call
var $loadingElem = $("<img class='loader' src='images/loader.gif'>");
$loadingElem.insertBefore($this);
// call ajax with some data
$.ajax({
url: '...', data: {id: tableId}, // ....
complete: function(xhr, textStatus) {
// remove the element when the ajax completes
$loadingElem.remove();
}
});
});
此外,$($this)
是一个浪费的调用,它只会返回 $this
关于php - AjaxStart 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664872/
如果您点击此处的“点击此处订购”按钮:http://www.game onglove.com/gog/test3.html,然后在弹出的灯箱窗口上单击相同的按钮,将使用 $.post() 运行 aja
这段代码 $("#loading").ajaxStart(function() { alert("start"); $(this).show(); }); 在我
以下是我的代码 $(document).ready(function() { $(document).ajaxStart(function () { alert("start"); }); /
我用户 jquery.ajax 调用 asp.net mvc 的 Controller ...我想显示一个加载指示器..我尝试了这个,但似乎不起作用... Loading... 
我的 jQuery 脚本顶部有这个: $().ajaxStart(function() { alert('ok'); }); 但是警报没有触发。所有其他 ajax 都可以工作,
我的页面上有 2 个使用 Ajax 的元素。一个是简单的复选框(设置默认值),另一个是由链接触发的弹出窗口。弹出窗口必须加载一堆元素,因此我有一个“正在加载...”覆盖 div,它由 ajaxStar
如何设置ajaxStart? 我得到“$.ajaxStart 不是一个函数” function Loader(){ this.loader = null; this.cnstr =
我正在尝试使用 ajax 构建一个购物网站。当用户单击“添加到购物车”图像时。小加载图像将显示在“添加到购物车”图像旁边。第一次点击效果很好,图像显示如我所料。但是,第二次和随后的点击会在第一个加载图
我有一个使用 shell_exec 命令运行 python 脚本的网页。我想要一个加载微调器,“请稍候此页面加载”这样的消息,在 python 脚本运行时显示,然后在它完成后显示其余的 echo'd
我有一个加载函数,希望代码在加载时将一些 html 写入 div,并在加载完成时显示页面。我看到了一些关于 ajaxStart 和 ajaxComplete 事件的小文章,但是我不确定如何实现它们。
我想在我的网站中添加加载程序,并且我正在使用 ajaxStart 和 ajxStop 请求来隐藏和显示 div。但问题是 ajaxStart 和 ajaxStop 请求没有被按钮 onclick 触发
我想检查脚本中是否存在任何未完成的 Ajax 事件,如下所示: $('nav a').click(function(){ var url = $(this).attr('href');
我有以下运行得相当好的脚本: $("#spanLoading").ajaxStart(function () { $('#spanLoading').empty().append(""); }
我为 jQuery AJAX 调用进行了常规预加载。我确实用过: $(document).ajaxStart(function(e) { objMain.ajaxPreloader.show
由于通常看似简单的事情需要几天的时间才能解决,也许有人可以给我指出一个解决方案,但两天后我放弃了以下问题; 在 html 中,我有一个按钮,应该通过 ajax 调用触发数据加载: Show Data
我使用 ajaxStart() 来为每个 AJAX 调用加载加载弹出屏幕。我在弹出窗口中给出的文本是 loading!请稍候。 我需要根据屏幕更改文本。例如,我有一个屏幕正在对 AJAX 调用进行一些
使用 Asp.Net MVC 3 (Razor)。我正在尝试添加 blockUI 插件,以在使用 @Ajax.ActionLink 调用操作时显示加载指示器 如果我使用默认调用,效果很好 $(docu
我的 jquery 调用如下在文本框上。我想阻止此选择器上的 ajaxStart() $("#ddl_select").keyup(function() { var searchid = $(
我有两个函数可以调用 $.getJSON - 一个函数查看服务器上存储的 JSON,另一个函数调用 Flickr。 我有这个: $(document).ajaxStart(function(){
我正在尝试通过 ajaxStart、ajaxStop/ajaxComplete 事件使用 jQuery UI 模式对话框作为加载指示器。当页面触发时,Ajax 处理程序会加载一些数据,并且模式对话框显
我是一名优秀的程序员,十分优秀!