Javascript jQuery单击被激发两次
代码:Javascript jQuery单击被激发两次,javascript,jquery,onclick,Javascript,Jquery,Onclick,代码: wait标志防止在最后一个请求得到服务之前发送请求。我这样做是因为我跟踪一个nonce,并且在每个请求之后我必须获得一个新的nonce 同样,如果我删除数据服务,它也可以正常工作。但我需要为数据提供服务以获得新的nonce 另外,我没有看到它在任何地方坠毁。任何帮助都会很好。如果需要,我会发布任何其他函数。我的完整脚本相当大 下面是.box折叠父项的HTML: function updating(){ if(!wait) { $("#loading").html(
wait
标志防止在最后一个请求得到服务之前发送请求。我这样做是因为我跟踪一个nonce,并且在每个请求之后我必须获得一个新的nonce
同样,如果我删除数据服务,它也可以正常工作。但我需要为数据提供服务以获得新的nonce
另外,我没有看到它在任何地方坠毁。任何帮助都会很好。如果需要,我会发布任何其他函数。我的完整脚本相当大
下面是.box折叠父项的HTML:function updating(){
if(!wait) {
$("#loading").html('Updating...');
wait = true;
return false;
}
else {
$("#loading").html('Slow down...');
return true;
}
}
function clearUpdate(data){
var resp = $('<div />').html(data);
//alert(resp.find("#nonce").val() + " "+$("#nonce").val());
$("#loading").html(resp.find("#loading").html());
if(typeof(resp.find("#nonce").val()) == 'undefined'){
alert(data);
$("#loading").html("Fatal error. Your session could have ended. <a href='javascript:location.reload()'>Refresh</a>");
resp.remove();
return false;
}
else if(resp.find("#errorcode_").val() == "refresh"){
location.reload();
}
resp.find(".image-box").each(function(){
$("#"+$(this).attr("id")).find(".image-count").html($(this).find(".image-count").html());
});
$("#nonce").val(resp.find("#nonce").val());
wait = false;
resp.remove();
}
1.肖像画
(20)
移动到:移动:
|
有多个.box
实例,我没有在h2
标记后显示内容(这就是我的div
没有关闭的原因)
根据要求,这是一个逐步进行的过程:- 我在.box折叠实例上单击“折叠”。它发送其
href
- jQuery切换其幻灯片李>
- 在回拨时,我从刚才单击的链接中获得新的href。它应该将查询字符串从
更改为expand=an_album
,反之亦然。我还将状态从“扩展”更改为“崩溃”。我正在根据刚才单击的包含collapse=an_album
的id搜索响应。我得到了正确的响应(collapse将变为expand),但是jQuery.box
两次李>slideToggles
- 在
中,我根据接收到的数据更新当前值。如果我得不到暂缓令,我就死定了。我还更新每个clearUpdate()
的图像计数.box
alert($(“.box collapse”).length)代码>在myclearUpdate()
中,并且大小不变
错误存在于成功函数和/或clearUpdate中。由于我收到的HTML与我已经收到的完全相同(减去上面的更改),我是否可能正在重新分析javascript并重新绑定单击?但这似乎不可行,因为我应该在第一次点击后发射多次。
更新
我在$(document).ready()
中添加了一个警报,每次收到响应时都会收到警报。因此,它正在重新解析javascript并重新绑定单击。我的即时修复方法是将其更改为:$(“.box collapse”).die(“click”).live(“click”,function())
,但我将添加一个查询来禁用javascript头
谢谢你的帮助 如果数据包含.box collapse类,则这很可能会创建第二次单击事件
<div class='box image-box album-marker-visible image-box-w-20 image-box-list-0' id='portrait'>
<h2 class='box-header image-box-header'>
<input type='checkbox' name='albums[portrait]'>
<span class='image-box-header-move'>
<span class='image-album-number'>1</span>. Portrait <input type='hidden' class='image-album-anchor' value='portrait'>
<input type='hidden' class='image-album-portfolio' value='1'>
<span class='image-count'>(20)</span>
<span class='box-mover'>Move to: <a href='images?n=bridals,weddings,engagement,portrait&port=2&nonce=I8FX2BH841' title='Move to Wedding Portfolio'>Wedding Portfolio</a> Move: <a href='images?n=story,portrait,capture,press,concerts&port=1&nonce=I8FX2BH841'>down</a></span></span>
<span class='album-marker'> | <a href='images?ia=3&action=hide&nonce=I8FX2BH841' title='Mark album as hide' class='album-mark-hide album-mark'>hide</a></span>
<a class='box-mover-show box-collapse' href='images?expand=portrait&nonce=I8FX2BH841' title='Expand Portrait'>expand</a></h2>
这令人担忧。这意味着resp中有一个元素与b中的元素具有相同的id。
从live切换到click的原因很可能是click事件
发生两次
var ncol=resp.find(“#”+c+”.box collapse”)
对.box collapse或数据的内容了解太少,无法理解
var col = $("#"+c+" .box-collapse");
现在我想我终于明白了
将数据更改为包含JSON对象或更简单的HTML结构,其工作方式应如下所示
好榜样
col.html(ncol.html());
col.attr('href',ncol.attr('href'));
坏榜样
服务器响应:
data == { "innerText":"expand", "url":"images?expand=portrait&nonce=I8FX2BH841" }
col.html(data.innerText);
col.attr('href', data.url);
data==expandimages?expand=纵向和非纵向=I8FX2BH841
var div=$(“”).html(数据);
col.html(div.find(“.innerText”).html();
col.attr(div.find(“.url”).html());
调整clearUpdate功能你能显示与此点击事件相关的HTML吗?你真的需要live吗?您的.box折叠是如何添加的?嗯,HTML是页面的确切内容,因此有很多。你有什么特别想看的吗?我还没有把它公之于众,否则我会让你去探索它。@sunn0。忘了提到,如果我删除live并只需单击一下,它会在第一次单击后立即触发两次。我们需要查看周围的整体标记。框折叠(直接父项和子项)感谢您的评论。您是对的,我想将响应更改为JSON,但为了开始测试,我只是将响应保留为HTML。当我期望得到我已有的响应时,它使我更容易进行测试。很好地掌握了身份证,你是对的。当我收到回复时,我从来没有想过要有一个非唯一的ID。我很感激你的意见,我很快就会修改的。
col.html(ncol.html());
col.attr('href',ncol.attr('href'));
data == { "innerText":"expand", "url":"images?expand=portrait&nonce=I8FX2BH841" }
col.html(data.innerText);
col.attr('href', data.url);
data == <span class="innerText">expand</span><span class="url">images?expand=portrait&nonce=I8FX2BH841</span>
var div = $("<div />").html(data);
col.html(div.find(".innerText").html());
col.attr(div.find(".url").html());